1

jQuery Validate を介して検証される登録フォームがあり、フォームがエラーを適切にキャッチして検証エラー メッセージを表示している間、検証を強制するか送信ボタンを 2 回クリックするまで、「label label-important」クラスを使用しません。時間。

こちらをご覧ください: http://jsbin.com/uguwem/12/

ここに私のjsコードがあります:

$('#registrationform').validate({ 
    highlight: function (element, errorClass, validClass) { 
        $(element).parents("div[class='control-group']").addClass("error");
        $(element.form).find("span[for=" + element.id + "]").addClass("label label-important");
        }, 
        unhighlight: function (element, errorClass, validClass) { 
                $(element).parents(".error").removeClass("error"); 
        }, 
        errorElement: 'span' 
 }); 
4

1 に答える 1

1

エラー要素(あなたの場合はa)が生成されるhighlightに呼び出されたようです。span

spanこれは、 で初めてを検索しようとしたときにhighlight、存在しないことを意味します。validateはエラー要素を削除せず、それらを表示および非表示にするだけです。これが、フォームが 2 回目に検証されたときに検出される理由です。

errorPlacement代わりにオプションを使用し、クラスを手動で追加することで、これを回避します。

$(document).ready(function() {
    $('#registrationform').validate({
        //errorClass: "label-important",
        highlight: function(element, errorClass, validClass) {
            $(element).parents("div[class='control-group']").addClass("error");

        },
        unhighlight: function(element, errorClass, validClass) {
            $(element).parents(".error").removeClass("error");
        },
        errorElement: 'span',
        errorPlacement: function($error, $element) {
            $error.addClass("label label-important").insertAfter($element);
        }
    });
});​

更新された例: http://jsbin.com/opoqan/

于 2012-06-19T03:15:14.777 に答える