0

私のinArrayjQuery検証が機能しません:

html:

<input type="text" name="number" class="verify" conditions="requierd numeric"/>
<input type="text" name="number2" class="verify" conditions="requierd string"/>

私のinArray検証を使用したjQueryコード:

    $('input.verify').blur(function(){
        var conditions = $(this).attr('conditions').split(' ');
            if($.inArray('requierd', conditions)){
                alert('ok');
            }
    });

しかし、私が=== false私の状態を後回しにするとき、それは働きます!

    $('input.verify').blur(function(){
        var conditions = $(this).attr('conditions').split(' ');
            if($.inArray('requierd', conditions) === false){
                alert('ok');
            }
    });

なんで ?

ありがとう

4

3 に答える 3

1

公式ドキュメントによると:

一致するものが見つからない場合は-1を返します。配列内の最初の要素が値と一致する場合、$。inArray()は0を返します。

JavaScriptは0をfalseと大まかに等しいものとして扱うため(つまり、0 == falseですが、0!== false)、配列内の値の存在をチェックする場合、それが等しくない(またはより大きい)かどうかをチェックする必要があります)-1。

于 2012-08-28T14:49:54.827 に答える
0

と同様にindexOf()$.inArrayに対してチェックする必要があります-1。それ以外の場合、要素が見つからない場合は、真の値を返し-1ますつまり、条件をtrueに解決します。

要するに:

if ($.inArray('something', array) != -1)

ただし、条件文字列を実際に分割する必要はないことに注意してください。単語境界のあるREGEXを使用できます。

if (/\brequired\b/.test($(this).attr('conditions')) { /* code */ }

最後に、data-カスタム属性を発明するだけでなく、属性を使用する必要があります。後者はHTMLを無効にするためです。

于 2012-08-28T14:49:49.040 に答える
0

$.inArray()-1要素が見つからない場合は戻ります。これはに評価されtrueます。次のいずれかを使用します。

if (~$.inArray('requierd', conditions))

これは機能するため~-1 == 0 == falseです。または、代わりに、そしてはるかに最も一般的です:

if ($.inArray('requierd', conditions) != -1)
于 2012-08-28T14:51:03.113 に答える