フォーム フィールドの検証に jQuery Validation プラグインを使用しています。アイデアは、フォーム送信のいずれかのフィールドが有効なパスワード フィールドではなく、エラー メッセージがリセットされた場合、他のフィールドはそのままであるということです。パスワード フィールドをリセットする方法はありますが、エラー メッセージを削除できません。
コードはこちら: http://jsfiddle.net/2Z9jp/
すべてのフィールドに無効な値を入力して送信すると、パスワード入力フィールドは空になりますが、エラーは残ります。この場合、パスワード フィールドのエラー メッセージを削除する必要があります。
ハイライトが無効なハンドラーの後に発生し、それがこの問題を引き起こしているようです。
コードは次のとおりです。
<form id="registerForm" class="regForms" method="post" action="/">
<span>username: </span><input type="text" id="username" name="username" /><br />
<span class="passwordHolder">
<span>password: </span><input type="password" id="password1" name="password1" /><br />
</span>
<span class="passwordHolder">
<span>confirm password: </span><input type="password" id="password2" name="password2" /><br />
</span>
<input type="submit" />
</div>
</form>
$("#registerForm").validate({
rules: {
username: {
required: true,
minlength: 6
},
password1: {
required: true,
minlength: 6,
maxlength: 256
},
password2: {
required: true,
equalTo: "#password1",
minlength: 6,
maxlength: 256
}
},
messages: {
username: {
required: "required",
minlength: "should be 6 or longer"
},
password1: {
required: "required",
minlength: "should be 6 or longer"
},
password2: {
required: "required",
minlength: "should be 6 or longer",
equalTo: "should be the same as password"
}
},
invalidHandler: function(form, validator) {
$(':password').val('');
$('.passwordHolder label.error').hide();
}
});