如果您查看此表格: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();
},