1

jQuery 検証の使用 - ぼかしの検証:

$('input, select, radio, checkbox').blur(function(){
        $("#createAccount").validate().element(this);
});

ユーザーがフォームをタブで移動し、フィールドがオプションの場合、フィールドは OK として検証されます (そしてクラスが追加され、入力フィールドの色などが変更されます)。

私がやりたいことは、必須ではない空のフィールドの検証を無視することです。

私の現在の無視は:hidden

ignore: ":hidden",

そして私が試したとき:

ignore: ":hidden, .ignore",

これは、クラスが無視するフィールドがフォーカスされたときにエラーをスローします。そのため、フィールドを無視すると、そのフィールドの他の検証がトリガーされない場合を除いて、ほとんど機能します。したがって、フィールドはオプションですが、まだ検証があります。空のオプションフィールドで成功の検証をトリガーしたくないだけです。

ありがとう!

編集

したがって、ロジックは次のようになります。空で不要な場合は onblur を無視します。空でない場合は、そのフィールドに関連付けられた検証を実行します。

4

5 に答える 5

2

検証行の前に次の行を追加します

if($(this).val()=="")
{
 return;
}

テキスト フィールドの場合は "" です。Select の場合は、「0」または最初のオプションに指定したその他の値になります。

于 2012-05-10T19:21:51.873 に答える
0

必須ではないフィールドに別の css クラスを追加し、それらのクラスを持つフィールドを無視することができます。例えば

ignore: ".ignore"

ignoreのように使用できる場所

<input type="text" class="ignore" value=""/>

ちょうど私の考え。

于 2012-05-10T19:19:07.583 に答える
0

検証がどのように機能するかはわかりませんが、検証したくないフィールドにフラグ/クラスを追加して、それらを無視することができます

アップデート

わかりましたので、オプションの空のフィールドに無視クラスがある場合

$('input, select, radio, checkbox').blur(function(){
    if( !($(this).hasClass('ignore') && $(this).val()=="")) {       
        $("#createAccount").validate().element(this);
    }
});

コードは 100% 正しいとは限りませんが、概念はそこにあります。フィールドが空ではなく、フィールドに .ignore クラスがない場合にのみ検証してください。

于 2012-05-10T19:19:50.640 に答える
0

これを達成するために私がしたことは次のとおりです。

値が得られるまで無視する必要がある入力の場合、入力にクラスを追加しました-「無視」

$('.ignore').blur(function(){
        if( $(this).val()=="") {
         $(this).parent().removeClass("inputSuccess");
        }
    });

この関数では、入力にクラスが無視され、値が入力されていない場合、検証呼び出しで設定した有効なクラスを削除します。値が入力されると、それらの項目に対して通常の検証がトリガーされます。

于 2012-05-14T13:16:05.300 に答える
0

質問がよくわからないかもしれませんが、1 つの無視されたテキスト ボックスと 1 つの非表示のテキスト ボックスで何をしようとしているのかを示す例を次に示します: http://jsfiddle.net/brianmat/wJveQ/2/

関連する jQuery:

$(document).ready(function() {

$("form").validate({
    invalidHandler: function(e, validator) {
        var errors = validator.numberOfInvalids();
        if (errors) {
            var message = errors == 1 ? 'You missed 1 field. It has been highlighted below' : 'You missed ' + errors + ' fields.  They have been highlighted below';
            $("div.error span").html(message);
            $("div.error").show();
        } else {
            $("div.error").hide();
        }
    },
    ignore: ".ignore, :hidden",
    errorPlacement: function(error, element) {},
    submitHandler: function(form) {
        $("div.error").hide();
        form.submit();
    }
});

});​
于 2012-05-10T23:44:43.653 に答える