【问题标题】:Updating number of errors on field change using jQuery Validation使用 jQuery Validation 更新字段更改的错误数
【发布时间】:2017-11-12 20:24:57
【问题描述】:

如何让标题中的错误数量在字段更改时立即反映表单中的错误数量?

<h6 class="error" style="font-size: 1.5em; font-weight: bold; color: #d0011b;">
    <span class="numOfErrors"></span> occurred.
</h6>

目前的标准行为是验证本身在更改时起作用,但标题中显示的错误编号仅在提交时更新。我希望它能够及时更新。

我已阅读验证文档,但似乎无法找到实现此目的的内置方法。我尝试将可见列表项存储在一个名为 listSize 的变量中,但不会动态更新。

invalidHandler: function(event, validator) {
    var errors = validator.numberOfInvalids();
    if ((errors) > 1) {
      $(".numOfErrors").text(errors + " errors have");
    } else {
      $(".numOfErrors").text(errors + " error has");
    }
 },

http://jsfiddle.net/sw87W/159/

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    要实现所需的行为,您可以在文本输入中的每个 valid() valid() method上调用 keypress在文本输入中以及 change change时发生在select上:

    >
    $('input:text').keypress(function() {
        $('#form-jsvalidate').valid();
    });
    
    $('select').change(function() {
        $('#form-jsvalidate').valid();
    })
    

    Updated fiddle

    【讨论】:

    • 这行得通 - 谢谢。就我而言,这是更好的解决方案,因为它也验证了 Bootstrap 下拉菜单。非常非常感谢!
    【解决方案2】:

    您可以使用“showErrors”回调

    来自官方文档:

    $("#myform").validate({
        showErrors: function(errorMap, errorList) {
            $("#summary").html("Your form contains "
                + this.numberOfInvalids()
                + " errors, see details below.");
            this.defaultShowErrors();
        }
    });
    

    所以对你来说,你可以这样做:

    $("#myform").validate({
        showErrors: function(errorMap, errorList) {
            $(".numOfErrors").html(this.numberOfInvalids());
            this.defaultShowErrors();
        }
    });
    

    【讨论】:

    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多