【问题标题】:ASP.Net Custom Client-Side ValidationASP.Net 自定义客户端验证
【发布时间】:2010-09-05 07:25:53
【问题描述】:

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

关于为什么找不到该功能的任何想法?如何在无需将功能添加到我的母版页或使用页的情况下解决此问题?

【问题讨论】:

    标签: asp.net javascript validation


    【解决方案1】:

    尝试将参数名称更改为 senderargs。并且,在它工作后,将呼叫切换到 ScriptManager.RegisterClientScriptBlock,无论使用何种 AJAX。

    【讨论】:

      【解决方案2】:

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

      ScriptManager.RegisterClientScriptBlock
      

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

      【讨论】:

        【解决方案3】:

        你也可以使用:

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

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

        【讨论】:

          【解决方案4】:

          虽然我仍然想知道为什么我的 javascript 没有被识别,但我在此期间找到的解决方案(并且应该首先完成)是使用 Asp:CompareValidator 而不是 Asp:CustomValidator .

          【讨论】:

            猜你喜欢
            • 2011-02-21
            • 1970-01-01
            • 2014-03-19
            • 2017-05-03
            • 1970-01-01
            • 1970-01-01
            • 2014-11-03
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多