English 中文(简体)
如何以无效的方式展示信息 J Query 有效载人
原标题:How to display messages in invalidHandler in JQuery validator
  • 时间:2009-09-22 07:27:30
  •  标签:

我试图以表格的形式使用JQuery有效器,并试图从中获取关于无效H以及ler选择中错误的信息(或者如果在其他地方确实有的话)。

当用户点击提交纽顿时,不管第一个错误是什么,我想用错误的信息显示一个警示箱。 我不想把错误写在文件上。 我看不出在验证后如何利用错误信息。 我只发现如何掌握这些要素,这确实帮助我。

从实例中推断出,这里有一些Im的测试法。

$(document).ready(function() {
    $( #commentForm ).validate({
        invalidH以及ler: function(f, v) {
            var errors = v.numberOfInvalids();
            if (errors) {
                var invalidElements = v.invalidElements();
                alert(invalidElements[0]);
            }
        }
    });
});

以及

 <form class="cmxform" id="commentForm" method="get" action="">
 <fieldset>
   <legend>A simple comment form with submit validation 以及 default messages</legend>
   <p>
     <label for="cname">Name</label>
     <em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" />
   </p>
   <p>
     <input class="submit" type="submit" value="Submit"/>
   </p>
 </fieldset>
 </form>
问题回答

这对我有好处。

    invalidHandler: function(form, validator) {
      var errors = validator.numberOfInvalids();
      if (errors) {
        var message = errors == 1
          ?  Please correct the following error:
 
          :  Please correct the following   + errors +   errors.
 ;
        var errors = "";
        if (validator.errorList.length > 0) {
            for (x=0;x<validator.errorList.length;x++) {
                errors += "
u25CF " + validator.errorList[x].message;
            }
        }
        alert(message + errors);
      }
      validator.focusInvalid();
    }

我知道这个问题是老的,但为了帮助其他人获得更好的答案,我要告诉你,不要使用无效的Handler,而是显示错误。

Thats because invalidHandler will be called only when you submit your form while showErrors is called every time a field is updated.

因此:

页: 1

 $("form").validate({
    rules: {
        name: {
            required: true
        }
    },
    messages: {
        name: {
            required: "required"
        }
    },
    highlight: function (element) {
        $(element).closest( .form-group ).removeClass( has-success ).addClass( has-error )
        $(element).parent().find( .form-control-feedback ).removeClass( glyphicon-ok ).addClass( glyphicon-remove );
    },
    unhighlight: function (element) {
        $(element).closest( .form-group ).removeClass( has-error ).addClass( has-success );
        $(element).parent().find( .form-control-feedback ).removeClass( glyphicon-remove ).addClass( glyphicon-ok );
    },
    errorElement:  span ,
    errorClass:  help-block ,
    errorPlacement: function (error, element) {
        if (element.parent( .input-group ).length) {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    },
    showErrors: function (errorMap, errorList) {
        var errors = this.numberOfInvalids();
        if (errors) {
            var message = errors == 1
              ?  Your form has 1 error 
              :  Your form has   + errors +   errors. ;
            message = message +   Please, fix then. 
            $("#error span").empty().html(message);
            $("#error").show();
        } else {
            $("#error").hide();
        }
        this.defaultShowErrors();
    },
});

Don tabes.html

<div id="error"><span></span></div>

showErrors<>><>><<>>>> 按预期工作。 我刚刚需要获得第一个错误信息。

    showErrors: function(errorMap, errorList) {
        alert(errorList[0].message);
    }

还记得对<代码>onfocusoutonkeyup的备选办法进行了研究,否则你会收到连续的信息。

海关检查错误

if (errorList.length > 0) alert(errorList[0].message);

您不应使用警示,

但是,如果你真的想要使用的话。 解决办法取决于gin金如何增加主要元素,但你可以消除这些dom子。 因此,让这些因素加起来,但删除。

另一种选择是,你应当把你用来作鉴定的假装,而不是增加很少显示的警示。





相关问题
热门标签