ASP.Net自定义客户端验证
时间:2020-03-05 18:37:35 来源:igfitidea点击:
我在.Net 2.0网站上的用户控件中的JavaScript中有一个自定义验证功能,该功能检查是否已支付的费用不超过应缴的费用金额。
我已经将验证器代码放置在" ascx"文件中,并且我还尝试使用" Page.ClientScript.RegisterClientScriptBlock()",在两种情况下均会触发验证,但是找不到JavaScript函数。
Firefox错误控制台中的输出为"" feeAmountCheck未定义""。这是函数(此函数直接取自firefox-> view源)
<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>
关于为什么找不到该功能的任何想法?如何解决此问题而不必将功能添加到我的母版页或者使用页上?
解决方案
回答
使用.Net 2.0和Ajax时,应使用:
ScriptManager.RegisterClientScriptBlock
在Ajax环境中,它将比旧的Page.ClientScript版本更好地工作。
回答
尝试将参数名称更改为sender
和args
。并且,在工作之后,无论使用AJAX如何,都将调用切换到ScriptManager.RegisterClientScriptBlock
。
回答
虽然我仍然想回答为什么无法识别我的javascript的问题,但与此同时,我发现的解决方案(应该首先完成)是使用Asp:CompareValidator
而不是Asp:CustomValidator
。
回答
我们也可以使用:
var amountDue = document.getElementById('<%=YourControlName.ClientID%>');
这将自动解析该元素的客户端ID,而无需弄清楚它的名称为''ctl00_footerContentHolder_Fees1_FeeDue'。