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