2012-02-17 18 views
0

我如何檢查一組隱藏字段的值,如果它們的值有不同點,我會返回false。但空值和「假」應被視爲平等。只有3個可能的值,空,真和假,但我想把空作爲假。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').haveSameValue()將返回boolean值取決於如果所有元素匹配truefalse(由'your-selector-here')具有相同的價值或沒有。

+0

實際上,我已經使用$ .each回答了我自己的問題,而您的問題與我的解決方案几乎完全相同,因此我會接受此答案。和+1作爲擴展。 – 2012-02-17 07:58:02

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是否等於'==='的含義和'!=='的含義是什麼?我對這個布爾表達式不是很熟悉。 – 2012-02-17 07:42:26

+0

===意思是'沒有類型轉換'的平等......所以內容和類型必須相同。 !==是否定 – devnull69 2012-02-17 07:48:09

相關問題