2012-02-17 3 views
0

隠しフィールドのグループをその値でチェックするにはどうしたらよいですか?その値に相違がある場合、falseを返します。しかし空の値と "False"は等しく扱われるべきです。空、真、偽の3つの値しかありませんが、私は空をFalseとして扱いたいと思います。私はjqueryは値の類似性についてすべての隠し要素をチェックしてブール値を返します

var isTrue = true; 

// is there a way to do this in jquery or similar to this? 
var values = $("#group input:hidden").distinct().take(2); 
if(values.length == 2) { 
    // only make it false if there is a true in the values. 
    if(values[0] == 'True' || values[1] == 'True') { 
     isTrue = false; 
    } 
} 
のようなもの

をしたい

出力は、インデックス内のインデックスを交換することができる

{values[0] = '', values[1] = 'False'} = true 
{values[0] = 'True', values[1] = 'False'} = false 
{values[0] = '', values[1] = 'True'} = false 

ようにする必要があります。

答えて

1

コードに次のjQuery拡張機能を追加してみてください。

(function($){ 

    $.fn.haveSameValue = function() { 

     var val = -1; 
     var same = true; 

     this.each(function() { 
      var thisValue = ($(this).val()=="")?"False":$(this).val(); 
      if(val != thisValue && val != -1) { 
       same = false; 
       return false; 
      } 
      val = thisValue; 
     }); 

     return same; 
    }; 

})(jQuery); 

今、あなたは同じ値を持っていないか('your-selector-here'によって)trueまたはfalseすべての要素が一致した場合に応じて、ブール戻ります$('your-selector-here').haveSameValue()を呼び出すことができるはずです。

+0

実際に私は$ .eachを使って私自身の質問に答えました。あなたのものは私のソリューションとほとんど同じですので、私はこの答えを受け入れます。それを拡張のために+1します。 –

1

だから、基本的には、すべての隠れた入力( ""と "False"を同じものとして扱う)に複数の別個の文字列値があるかどうかを知りたいですか?

これは何か?

var prevVal = null; 
var result = true; 
$('#group input:hidden').each(function() { 
    if(prevVal === null) { 
     prevVal = $(this).val(); 
    } else if((prevVal === "True" && $(this).val() !== "True") || (prevVal === "" && ($(this).val() !== "" || $(this).val !== "False")) || (prevVal === "False" && ($(this).val() !== "" || $(this).val !== "False"))) { 
     result = false; 
    } 
}); 
+0

tripple equal = '==='はどういう意味ですか、 '!=='はどういう意味ですか?私はこのブール式にあまり慣れていません。 –

+0

===はタイプコファレーションなしの平等を意味します...そのため、コンテンツとタイプは同一でなければなりません。 !==は否定です – devnull69

関連する問題