jQuery 验证 - 在用户输入和字段至少模糊一次之前不验证



如果您查看此表格:http://docs.jquery.com/plugins/validation#example

您会注意到一个问题:在任何文本框中输入单个击键后,它立即触发字段验证。例如,如果您开始在电子邮件字段中键入,则在单个击键之后,您将获得验证错误。

这似乎与示例表格下面的描述性文本直接矛盾,该文本说:

在将字段标记为无效之前,验证是懒惰的:在第一次提交表单之前,用户可以在不收到烦人的消息的情况下通过字段选项卡 - 在他有机会实际输入之前,他不会被打扰正确的值

一旦字段被标记为无效,它就会急切地验证:一旦用户输入必要的值,错误消息就会删除

如果用户在非标记字段中输入某些东西,并且tabs/clicks of anc of anc of ancal of(模糊字段),则已验证 - 显然,用户有意输入某物,但未能输入正确的值<</p>

这描述了所需的行为 - 没有烦人的错误消息;直到用户a)提交表格或b)将数据输入字段并模糊了字段。但是,演示中实际发生的事情是,在第一次击键之后触发了验证,而不是在字段模糊之后触发。因此,用户被"烦人的错误消息"轰炸。那分散了他的注意力。我们想要快乐的用户,不要生气的用户: - )

如何获得文本中描述的行为,而不是演示中的行为?

谢谢!

-josh

默认行为是进行实时验证。为了覆盖此内容,只需添加一个参数

onkeyup:false这样

 $(document).ready(function(){
    $("#commentForm").validate({
      "onkeyup":false
      });
  });

这是演示

在我的情况下,我不必在"输入"输入字段时尽快防止消息。

我正在使用form-validation jQuery插件。

这是我代码的示例,仅在您在输入中写入某些内容时才能验证。如果您写点内容,然后在这种情况下将其删除,则将出现"必需消息"字段:

JS代码

 form2.validate({
                 rules: {
                    name: {
                      required: true,
                      minlength: 2,
                      maxlength: 50,
                    },
                    lastname: {
                      required: true,
                      minlength: 2,
                      maxlength: 50,
                    },
                        }
                  },
            highlight: function (element) { // hightlight error inputs
                $(element)
                    .closest('.help-inline').removeClass('ok'); // display OK icon
                $(element)
                    .closest('.control-group').removeClass('success').addClass('error'); // set error class to the control group
            },
            unhighlight: function (element) { // revert the change done by hightlight
                $(element)
                    .closest('.control-group').removeClass('error'); // set error class to the control group
            },
 });

然后,如果您想在输入中"降落"后立即显示消息,则可以对焦点进行验证:就像在此JSFiddle示例

中一样

代码

    onfocusout: function (element) {
       $(element).valid();
    },

最新更新