focusInvalid
オプションがあり、デフォルトではtrue
です。ただし、フォームの送信が発生した場合にのみ機能します。 valid
メソッドでフォームを検証した場合、機能しません。質問は、valid
が使用されているときに無効なフィールドにフォーカスする方法です。
このデモ を参照して、違いを確認してください。そこのボタンを押すだけです。
まず、バリデーターを変数に保存して、クリックハンドラーで使用できるようにする必要があります。
var validator = $("#test-form").validate({ /* settings */ });
次に、検証ハンドラーで、focusInvalid
変数からvalidator
関数を手動で呼び出すことができます。
$("#validate").click(function() {
if ($("#test-form").valid())
alert("Valid!");
else
validator.focusInvalid();
return false;
});
invalidHandler
を使用すると、失敗した最初の要素にフォーカスを設定できます。
$("#form").validate({
onfocusout: false,
invalidHandler: function(form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
validator.errorList[0].element.focus();
}
}
});