ASP.Net 自定义客户端验证
-
08-06-2019 - |
题
我在 .Net 2.0 网站上的用户控件中有一个 JavaScript 自定义验证函数,该函数检查所支付的费用是否超过应付费用金额。
我已将验证器代码放入 ascx
文件,我也尝试过使用 Page.ClientScript.RegisterClientScriptBlock()
在这两种情况下都会触发验证,但无法找到 JavaScript 函数。
Firefox 错误控制台的输出是 "feeAmountCheck is not defined"
. 。这是函数(这是直接从 firefox->view source 获取的)
<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
它在 Ajax 环境中比旧的 Page.ClientScript 版本工作得更好
您也可以使用:
var amountDue = document.getElementById('<%=YourControlName.ClientID%>');
这将自动解析该元素的客户端 ID,而无需您知道它的名称 'ctl00_footerContentHolder_Fees1_FeeDue'
.
虽然我仍然想知道为什么我的 javascript 没有被识别,但我同时找到的解决方案(并且应该首先完成)是使用 Asp:CompareValidator
而不是 Asp:CustomValidator
.
不隶属于 StackOverflow