jquery 验证如何仅从指定的隐藏字段隐藏错误消息

jquery validation how to hide error message only from specified hidden field

我得到的表格有很多字段,其中一个字段是隐藏的...正在验证 我使用下面的代码来设置高亮消息

jQuery('.validatedForm').validate({
    errorElement: "label",
    errorClass: 'profile-error',
    highlight: function(element) {
        $(element).css("border-color","#d44");
        if($('#checkedhour').val() == "") {
            $('.table tbody td').css("border","solid 1px #d44");
        }
    },
    unhighlight: function(element) {
        $(element).css("border-color","#DFD7CA");
    },
});

问题是错误也出现在隐藏的字段上...这个隐藏的字段... 我应该怎么做才能让只有隐藏字段的错误消息不出现但保持对这个字段的验证?

<form>
  <input type="text" required name="field1" />
  <input type="hidden" required name="field2" />
  <button type="submit">send</button>
</form>

当两个字段都为空时,错误消息将作为标签元素出现在两个字段之后。我只希望标签仅出现在非隐藏字段之后。

我找到了让我开心的简单解决方案。 :-)

即使我们不能通过 jQuery.validate() 做到这一点,我只是忘了我们仍然可以使用 CSS!

每个创建的错误元素,在本例中为 'label'(正如我通过 errorElement 设置的),也有自己的属性 "for",其值基于输入字段中的 "name" 属性,即验证。所以我们可以简单地添加到 CSS 需求

<style type="text/css">
label[for=field2].profile-error {display: none !important;}
</style>

现在,只有 "for" 属性指定值的错误标签不会出现。

否则,当有人通过 jquery 验证插件找到解决方案时,我仍然会很高兴。 :))

"Otherwise i still will be happiest when somebody find solution to make this via jquery validation plugin."

要控制消息的放置方式,请使用插件的 errorPlacement 选项。在条件检查元素是否隐藏时,您可以消除其消息。

errorPlacement: function(error, element) {
    if ($(element).is(":hidden")) {
        return false; // no message shown
    } else {
        error.insertAfter(element); // default message placement
    }
}

概念验证演示:http://jsfiddle.net/o5pns06x/