8

使用 jquery validate 插件,我试图覆盖它的默认行为。这是我的 html 的一个例子:

<table>
<tr>
  <td>
    <label for="my-input>Name</label>
  </td>
</tr>
<tr>
  <td>
    <input type="text" class="required" id="my-input />
  </td>
</tr>
</table>

我希望 valadate 做的就是将类 .error 添加到现有标签,然后在字段通过验证后将其删除。

谢谢。

4

2 回答 2

14

这是默认行为,您只需要停止页面上显示的错误消息。您可以通过覆盖 errorPlacement 来做到这一点

$('form').validate({
 errorPlacement: function () { }
});

编辑。

抱歉误读了问题位-下面的代码有效,但可能有更好的方法

$('form').validate({
    // make sure error message isn't displayed
    errorPlacement: function () { },
    // set the errorClass as a random string to prevent label disappearing when valid
    errorClass : "bob",
    // use highlight and unhighlight
    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");
    }
});

上面的代码来自options docs上的高亮示例

于 2013-01-31T13:55:17.373 回答
2
errorElement: "label",
errorPlacement: function(error, element) {
    error.insertBefore(element.parent().children("br"));
},
highlight: function(element) {
    $(element).parent().addClass("error");
},
unhighlight: function(element) {
    $(element).parent().removeClass("error");
}
于 2013-01-31T13:58:22.930 回答