javascript -ASP.Net自定义客户端验证

Translate

我在.Net 2.0网站上的用户控件中的JavaScript中有一个自定义验证功能,该功能检查是否已支付的费用不超过应缴的费用金额。

我已将验证程序代码放在ascx文件,我也尝试使用Page.ClientScript.RegisterClientScriptBlock()在这两种情况下,验证都会触发,但找不到JavaScript函数。

Firefox错误控制台中的输出为"feeAmountCheck is not defined"。这是函数(此函数直接取自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>

关于为什么找不到该功能的任何想法?如何解决此问题而不必将功能添加到我的母版页或使用页上?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

尝试将参数名称更改为senderargs。并且,在您正常工作后,将通话切换到ScriptManager.RegisterClientScriptBlock,无论使用AJAX。

来源
Translate

当使用.Net 2.0和Ajax时-应该使用:

ScriptManager.RegisterClientScriptBlock

在Ajax环境中,它将比旧的Page.ClientScript版本更好地工作。

来源
Translate

您也可以使用:

var amountDue = document.getElementById('<%=YourControlName.ClientID%>');

这将自动解析该元素的客户端ID,而无需弄清楚它的名称'ctl00_footerContentHolder_Fees1_FeeDue'.

来源
Translate

虽然我仍然想回答为什么无法识别我的javascript的问题,但与此同时,我发现的解决方案(应该首先完成)是使用Asp:CompareValidator而不是Asp:CustomValidator.

来源