2011-12-23 17 views
2

jQuery検証プラグインを使用しているときに、自分のフォームにカスタムCSSスタイルを追加するコードがあります。検証が成功した後にjQuery.validatorからスタイルを削除する

スタイルの各要素について以下のHTML
$(document).ready(function() { 
    jQuery.validator.setDefaults({ 
     errorPlacement: function(error, element) { 

     // Adds the red outline 
     element.parent().addClass("error"); 

     // Adds the red cross 
     element.siblings(".error_status").addClass('check'); 

     // Removes the default error 
     element.removeClass("error"); 
     }  
    }); 

$("#form").validate(); 

}); 

:私がいる問題は、私はその後、検証が成功した後、スタイルを削除する方法がわからないということです

<div class="row"> 
    <label for="id-3"><span>Email address:</span><span class="mark">*</span> 
    <input type="text" class="text required" id="id-3" name="email"/> 
    <span class="error_status"></span> 
</div> 

+0

「検証が成功した後にスタイルを削除する」とはどういう意味ですか?検証に成功すると、データがサーバーに送信されます。 jsFiddle.netのサンプルを提供できますか? –

答えて

3

errorPlacementの代わりにhighlightunhighlightコールバック(hereと記載)を使用すると便利です。このようにして、クラスを要素から手動で削除する必要はありません。

jQuery.validator.setDefaults({ 
    highlight: function(element, errorClass) { 
     var $element = $(element); 
     // Add the red outline. 
     $element.parent().addClass(errorClass); 
     // Add the red cross. 
     $element.siblings(".error_status").addClass("check"); 
    }, 
    unhighlight: function(element, errorClass) { 
     var $element = $(element); 
     // Remove the red cross. 
     $element.siblings(".error_status").removeClass("check"); 
     // Remove the red outline. 
     $element.parent().removeClass(errorClass); 
    } 
}); 
+0

優れていました。しかし、要素は要素オブジェクトではなくhtmlだけであるように見えましたか?私はこれを、単にelement.sibではなく$(element).sib ...と置き換えて修正しました – Nick

+0

本当に、コールバックは実際にはjQueryオブジェクトではなくDOM要素で呼び出されます。それに応じて更新された回答、あなたのフィードバックに感謝:) –

関連する問題