如果组中的任何字段无效,则以红色突出显示标签



我正在使用jquery validate来验证表单,我得到了以下内容:

$.validator.messages.required = ' *';
errorPlacement: function(error, element) {
    $( element )
        .closest( "form" )
        .find( "label[for='" + element.attr( "id" ) + "']" )
        .append( error );
    },
errorElement: "span",
highlight: function (element, errorClass, validClass) {
   $(element.form).find("label[for=" + element.id + "]")
   .addClass("error");
},
unhighlight: function (element, errorClass, validClass) {
    $(element.form).find("label[for=" + element.id + "]")
    .removeClass("error");
},

这完美地突出了我的红色字段标签,并在它们旁边加了一个*。然而,我有一个问题,当我有一组字段时,当前只有当第一个字段无效时,字段标签才会变为红色(显然,标签是针对该字段的)。

有人能告诉我如何使该组字段中的任何项目的标签变红吗?那么,如果月份或年份在出生日期组中无效?

编辑:Js报价:http://jsfiddle.net/v9dqrtpy/

虽然它不在规范中,但快速测试表明这种快速解决方法是有效的(无论如何,在Linux上的Chrome/FFirefox中):

<label for="dobday"><label for="dobmonth"><label for="dobyear">Date of Birth</label></label></label>

问题是它正在更改输入的颜色和该输入的标签(基于ID属性)。您可能应该将标签包装在元素周围,并检查$(input).parents('label')是否存在,并假设它是一个字段组。您可以将类似的逻辑应用于图例/字段集对,并使标准人员感到高兴。(确定字段是否属于字段集,然后做适当的事情。)

http://jsfiddle.net/v9dqrtpy/3/

最新更新