2011-12-30 10 views
0

すべてが同じ値を持つ場合、同じ形式の複数の入力をどのように比較できますか?彼らはすべて同じ価値を持っているかどうかを確認する必要があります。jQuery:複数の入力を比較する方法

<input type="text" class="inputclass"/> 
<input type="text" class="inputclass"/> 
<input type="text" class="inputclass"/> 
<input type="text" class="inputclass"/> 
<input type="text" class="inputclass"/> 
.... 
+1

あなたは彼ら***すべての***が同じ値を持っているかどうかを知りたいトリックを行う必要がありますか?または***いずれかの***に同じ値がある場合 –

+0

すべての入力が同じ値であるかどうかをチェックする必要があります。 – user759235

+0

入力クラスは入力クラスの非常に冗長な名前です(冗長すぎるため、非常に冗長です)。おそらく、それぞれに名前を付けるのは避けなければなりません。なぜ、単純にタイプテキストの入力ではないのでしょうか? – Incognito

答えて

5

これを試してみてください:ここで

var arr = $("input.inputclass").map(function(){ 
    return $(this).val(); 
}).toArray(); 

var allHaveSameValue = $.unique(arr).length == 1; 

は が http://jsfiddle.net/epignosisx/jzWUA/4/

UPDATE ======

@Anuragが指摘したように、$ .uniqueがあるjsfiddle.netありますDOM要素に対してのみ使用できます。

function uniqueArray(arr){ 
    return $.grep(arr,function(v,k){ 
     return $.inArray(v,arr) === k; 
    }); 
} 

var arr = $(".inputclass").map(function(){ 
    return $(this).val(); 
}).toArray(); 
var allHaveSameValue = uniqueArray(arr).length == 1; 

基本的に、本当にユニークな配列を返す関数を使用します。

+0

きちんとした、きれいな、コレクション操作の良い使用。 – Anurag

+0

@Esailija - このソリューションは基本的には健全ですが、現在の状態では機能しません。問題は、配列を一意にすること、または重複を削除することです。 jQueryのユニークなメソッドは、DOMノードの配列だけを受け入れ、他のタイプのオブジェクトでは機能しません。また、** uniqueが**すべての型の配列に対して機能すると仮定すると、 '1'との比較を行う前に' .length'を呼び出して配列内の一意の要素の数を取得する必要があります。 – Anurag

+0

'.length'テストでは意味がありますが、数字と配列を比較する' == 'という魔法のブードゥーがあったと思っています:P(元は' $ .unique(arr)== 1'でした)あなたは '.every 'を使ってコレクションを1回ループするだけでよいです。 – Esailija

0
function hasSameValue() { 
    var sameValue = true, formVal = $('.inputclass').first().val(); 
    $('.inputclass').each(function(){ 
    sameValue = sameValue && (formVal === $(this).val()); 
    if (!sameValue) { return false; } 
    }); 
    return sameValue; 
} 
1

これはhttp://jsfiddle.net/EpYTh/

var firstInput = $(".inputclass").eq(0).val(); 
var equalField = true; 
$(".inputclass").each(function(){ 

    if($(this).val() != firstInput){ 
     equalField = false; 
    } 
}); 


alert(equalField); 
関連する問題