ASP.Net 사용자 정의 클라이언트 측 유효성 검사
-
08-06-2019 - |
문제
지불한 수수료가 지불해야 할 수수료 금액을 초과하지 않는지 확인하는 .Net 2.0 웹 사이트의 사용자 컨트롤에 JavaScript로 사용자 정의 유효성 검사 기능이 있습니다.
유효성 검사기 코드를 ascx
파일을 사용했으며 나도 사용해 보았습니다. Page.ClientScript.RegisterClientScriptBlock()
두 경우 모두 유효성 검사가 실행되지만 JavaScript 함수를 찾을 수 없습니다.
Firefox 오류 콘솔의 출력은 다음과 같습니다. "feeAmountCheck is not defined"
.다음은 함수입니다(firefox->소스 보기에서 직접 가져옴).
<script type="text/javascript">
function feeAmountCheck(source, arguments)
{
var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue');
var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid');
if (amountDue.value > 0 && amountDue >= amountPaid)
{
arguments.IsValid = true;
}
else
{
arguments.IsValid = false;
}
return arguments;
}
</script>
함수를 찾을 수 없는 이유에 대한 아이디어가 있습니까?마스터 페이지나 소비 페이지에 기능을 추가하지 않고도 이 문제를 해결할 수 있나요?
해결책
인수 이름을 다음으로 변경해 보십시오. sender
그리고 args
.그리고 작동이 끝나면 통화를 다음으로 전환하세요. ScriptManager.RegisterClientScriptBlock
, AJAX 사용에 관계없이.
다른 팁
.Net 2.0 및 Ajax를 사용하는 경우 다음을 사용해야 합니다.
ScriptManager.RegisterClientScriptBlock
이전 Page.ClientScript 버전보다 Ajax 환경에서 더 잘 작동합니다.
또한 다음을 사용할 수도 있습니다.
var amountDue = document.getElementById('<%=YourControlName.ClientID%>');
그러면 요소가 호출되었는지 확인할 필요 없이 요소의 클라이언트 ID가 자동으로 확인됩니다. 'ctl00_footerContentHolder_Fees1_FeeDue'
.
내 자바스크립트가 인식되지 않는 이유에 대한 답변을 여전히 원하지만 그 동안 찾은 해결책은(처음부터 수행했어야 했던) 다음을 사용하는 것입니다. Asp:CompareValidator
대신에 Asp:CustomValidator
.