8

jquery 検証プラグインを使用して、デフォルトの動作をオーバーライドしようとしています。これは私の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");
    }
});

上記のコードは、オプション ドキュメントのハイライトの例からのものです。

于 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 に答える