ASP.Net自定义客​​户端验证

时间:2008-08-04 16:44:25

标签: asp.net javascript validation

我在.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>

关于为什么找不到该功能的任何想法?如何解决这个问题,而无需将功能添加到我的母版页或使用页面?

4 个答案:

答案 0 :(得分:14)

尝试将参数名称更改为senderargs。并且,在您使用它之后,将呼叫切换到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'