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

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

有帮助吗?

解决方案

尝试将参数名称更改为 senderargs. 。并且,在工作正常后,将呼叫切换至 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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top