2

如果您查看此表单: http ://docs.jquery.com/Plugins/Validation#Example

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

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

在字段被标记为无效之前,验证是懒惰的:在第一次提交表单之前,用户可以在字段之间切换而不会收到烦人的消息 - 在他有机会实际输入正确值之前他不会被窃听

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

如果用户在未标记的字段中输入了某些内容,并且标签/点击远离它(模糊字段),则它被验证 - 显然用户有意输入某些内容,但未能输入正确的值

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

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

谢谢!

-乔什

4

2 回答 2

0

默认行为是进行实时验证。要覆盖它,只需添加一个参数

onkeyup:false 像这样

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

这是演示

于 2012-11-09T21:32:54.860 回答
0

就我而言,只要您“输入”输入字段,我就不必做任何事情来阻止消息。

我正在使用表单验证 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();
    },
于 2014-01-22T18:02:06.417 回答