【问题标题】:ClientValidationFunction for CustomValidator fails while setting args.IsValid true/false设置 args.IsValid true/false 时 CustomValidator 的 ClientValidationFunction 失败
【发布时间】:2011-06-15 07:29:37
【问题描述】:

我有一个带有 ClientValidationFunction 的 CustomValidator,如下所示

function checkAmount(source, args) {
        var opt = document.getElementById('<%=optByAmount.ClientID %>');
        var txt = document.getElementById('<%=txtAmount.ClientID %>');
        if (opt.checked == true && txt.value == '') {
            //args.IsValid = false;
            alert('failed');
        }
        else {
            //args.IsValid = true;
            alert('passed');
        }
    }

仅当注释行被 COMMENTED 时,我才会收到错误消息“通过”和“失败”。启用这些线路后,我根本不会收到任何警报。为什么??

编辑 在停止并运行代码 20 分钟后(做这部分代码以外的事情),它现在可以工作了!!!感谢达米安和 ub1k。我永远不会知道为什么会这样:(

【问题讨论】:

    标签: javascript asp.net customvalidator


    【解决方案1】:

    能否在您的代码中添加额外的行?

    alert(args);
    

    在第一行?

    我已经仔细检查了您的代码,它对我来说非常有效。除此之外,我多次使用 CustomValidator,问题可能出在其他地方。现在,如果您可以检查 args 是否存在,那将会很有帮助。

    【讨论】:

    • 它说“未定义” 这是 CustomValidator,我可能调用不正确 *
    • 请同时检查源参数。如果它不为空,还要检查 source.IsValid。您是否更改了项目中的默认验证机制?我建议您在 clean 项目上检查它,以确保它在您的目标解决方案之外工作。
    • 在停止并运行代码 20 分钟后(做这部分代码以外的事情),它现在可以工作了!!!
    【解决方案2】:

    很可能是因为

    args.IsValid = true/false;
    

    抛出异常,此后代码不再执行

    args 不应该以某种方式初始化为数组吗?

    【讨论】:

    • 我也期待一个例外,但为什么?我发现了各种例子 args.IsValid = true/false;没有初始化。问题是为什么会失败?可能不知何故 args 没有 IsValid 但为什么以及如何?
    • 同意。原因很可能在其他地方。没有什么比我可以说的更有建设性的了,那就是你必须研究你有工作的其他例子并寻找差异。有时,那些看似不重要的细微差异实际上会导致行为改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    相关资源
    最近更新 更多