【问题标题】:Why is jQuery.validator.unobtrusive.adapters.addBool() not working as expected?为什么 jQuery.validator.unobtrusive.adapters.addBool() 没有按预期工作?
【发布时间】:2021-01-03 09:35:42
【问题描述】:

我已经构建了一个客户端自定义验证规则,该规则使用不显眼的验证来工作,如下所示。

$(function () {
    $.validator.addMethod('custom', function (value, element, params) {
        return (value == 47);
    });

    var input = $("#myField");
    input.rules("add", {
        custom: true,
        messages: {
            custom: "The value must be 47"
        }
    });
}); 

<input name="myField" id="myField" type="number" value="">
<span class="field-validation-valid text-danger" data-valmsg-replace="true" data-valmsg-for="myField"></span>

但是,我随后尝试改进代码,以便通过执行以下操作使其真正“不引人注目”:

$(function () {
    $.validator.addMethod('custom', function (value, element, params) {
        return (value == 47);
    });

    $.validator.unobtrusive.adapters.addBool('custom');
}); 

<input name="myField" id="myField" type="number" value="" data-val-custom="The value must be 47" data-val="true">
<span class="field-validation-valid text-danger" data-valmsg-replace="true" data-valmsg-for="myField"></span>

但是 addBool() 方法似乎不起作用并且不会产生错误。我错过了什么?提前谢谢你。

【问题讨论】:

    标签: jquery asp.net-mvc unobtrusive-validation


    【解决方案1】:

    问题是因为 addBool() 方法是在 jQuery 函数内部调用的。

    $(function()
    {
        //do stuff
    })
    

    将其更改为自调用函数有效,大概是因为addBool() 被调用之前 jQuery.validate.unobtrusive.js 内的一些代码而不是之后

    (function()
    {
        //do stuff
    })()
    

    我今天早上实际上遇到了相反的问题,下面的代码 sn-p 必须在 jQuery 函数中,而不是在自调用函数中才能工作。

        var input = $("#myField");
        input.rules("add", {
            custom: true,
            messages: {
                custom: "The value must be 47"
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2014-08-04
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2021-03-20
      相关资源
      最近更新 更多