jQueryvalidation – 隐藏错误消息
我正在使用jQuery Validation插件,并希望禁用它创建的元素/容器以显示错误“消息”。
基本上,我希望带错误的input元素具有错误类但不创建包含错误消息的附加元素。
这可能吗?
我刚刚想到了一个CSS解决方法,但它并没有真正解决这个元素仍然被创建的事实?
label.simpleValidationError {display: none !important; }
将Validator errorPlacement选项与空函数一起使用:
$("selector").validate({ errorPlacement: function(error, element) {} });
这有效地将错误消息放在一边。
您可以将showErrors选项设置为仅执行元素突出显示的函数:
$("selector").validate({ showErrors: function() { if (this.settings.highlight) { for (var i = 0; this.errorList[i]; ++i) { this.settings.highlight.call(this, this.errorList[i].element, this.settings.errorClass, this.settings.validClass); } } if (this.settings.unhighlight) { for (var i = 0, elements = this.validElements(); elements[i]; ++i) { this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass); } } } });
但这很大程度上依赖于validation插件的内部结构,所以它可能不安全。 最好的方法是插件以与defaultShowErrors()
相同的方式公开defaultHighlightElements()
方法,但事实并非如此。
您也可以使用此代码:
jQuery.validator.messages.required = ""; $("selector").validate();
我还想隐藏错误消息,并在出错时将input
字段和textarea
变为红色。 这是一个小例子:
以及jsfiddle中断时完全正常工作的代码;)
Demo
我也有同样的问题。 我不想要错误消息,只需要注意表单输入的亮点。 这些消息已经是空的,如但仍然在标签后创建了错误元素/容器。
因此,为了快速阻止这种情况发生,我通过注释掉唯一表示label.insertAfter(element);
行编辑了jquery.validate.js文件label.insertAfter(element);
绕线697 +/- ..
这只是一个菜鸟的解决方法;)但它做到了!
当我使用CSS来设置jquery validate中的label.valid,label.error样式时,此按钮清除了表单字段中的所有错误和左侧和数据。
仅使用CSS的最简单解决方案:
label.valid { display: none; }
可能更简单和语义上更好的解决方案是使用css
label.error { position:absolute; left:20000px; top:0; } input.error { border:red 1px; }
没有JS需要,更容易管理,有屏幕阅读器的人实际上会有一些迹象表明他们错过了什么
我有一个由另一个validation库开发的项目,我想添加validation库以使用它的function来检查表单是否有效(使用的validation库没有该function)
我的解决方案是:我刚刚通过其CDN添加了validation库
并在点击时使用validationfunction:
$(document).on('click','#buttonID',function(){ var form = $( "#formID" ); form.validate(); console.log(form.valid()); });
并尝试通过添加CSS代码隐藏由jquery validate引发的错误消息:
label.error{ display: none!important; }
您可以添加onfocus和onkeyup,以删除错误消息。
$("selector").validate({ onkeyup: false, onfocusout: false });