我在.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>
关于为什么找不到该功能的任何想法?如何解决这个问题,而无需将功能添加到我的母版页或使用页面?
答案 0 :(得分:14)
尝试将参数名称更改为sender
和args
。并且,在您使用它之后,将呼叫切换到ScriptManager.RegisterClientScriptBlock
,无论使用AJAX。
答案 1 :(得分:6)
当您使用.Net 2.0和Ajax时 - 您应该使用:
ScriptManager.RegisterClientScriptBlock
它将在Ajax环境中比旧的Page.ClientScript版本
更好地工作答案 2 :(得分:0)
虽然我仍然想要回答为什么我的javascript未被识别,但我在此期间找到的解决方案(并且应该首先完成)是使用Asp:CompareValidator
而不是{ {1}}。
答案 3 :(得分:0)
你也可以使用:
var amountDue = document.getElementById('<%=YourControlName.ClientID%>');
这将自动解析元素的客户端ID,而不必知道它被称为'ctl00_footerContentHolder_Fees1_FeeDue'
。