jQuery 仅在错误标签上验证插件控制 CSS

jQuery Validate plugin controlling CSS on error label only

我正在尝试控制使用 jQuery 验证插件时出现的错误消息的样式。我想应用 Bootstrap 中的 label label-danger CSS classes。我根据文档使用 errorClass 配置属性。

$("#frm").validate({
    errorClass: "label label-danger"
});

问题是插件还将这些 class 应用于 input 元素,然后使它们不可见。

在此处查看完整演示:http://jsfiddle.net/9me7bmny/

有什么方法可以分别为消息和目标元素指定错误 CSS class 吗?

此默认演示为以下两种解决方案提供了基础...

默认:http://jsfiddle.net/ndpngtrn/


1. CSS 定位...

如果您没有更改默认的错误消息元素,它将是 label。您可以使用 CSS 独立于 input 元素来定位此 label 元素。这可能是区分 input 样式与 label 样式的最简单方法。

label.yourerrorclass {
    /* some styling */
}

input.yourerrorclass {
    /* some other styling */
}

演示 1:http://jsfiddle.net/ndpngtrn/3/


2。 .validate()...

的选项

否则,highlightunhighlight 选项控制 类 对每个元素的应用。您将不得不编写自定义 highlightunhighlight 函数来覆盖默认行为。由于 highlightunhighlight 仅影响输入元素的样式而不影响错误标签,因此您有机会区分两者 CSS。

  • 错误标签:插件内部应用的默认值error/validCSS类。只能通过 errorClassvalidClass 选项分配不同的 类 或更改 CSS.

  • 来更改样式
  • 输入元素:CSS 样式是 applied/removed 通过 highlightunhighlight 函数。默认情况下,与错误标签相同的 error/valid CSS 类,但是,您可以将 highlightunhighlight 覆盖为 apply/remove 任何您想要的样式,从而实现与错误标签不同的样式。

要简单地停止 highlightunhighlight 从 adding/removing 任何 类 到每个 input 元素,请使用 return false(如果您还想 add/remove 其他 类 独立于您的错误消息,请参阅注释行)

highlight: function (element, errorClass, validClass) {
    return false;
    //$(element).addClass('foo').removeClass('bar');
},
unhighlight: function (element, errorClass, validClass) {
    return false;
    //$(element).addClass('bar').removeClass('foo');
}

errorClassvalidClass 参数分别表示插件定义的默认 类。

演示 2:http://jsfiddle.net/ndpngtrn/5/

解决方案 2 适用于您的 jsFiddle:http://jsfiddle.net/9me7bmny/2/