2012-04-26 35 views
3

我通過執行以下操作來達到此目的,但作爲javascript和jquery的新手,我想知道是否有任何簡短的方法來添加多個可能的值。Jquery .val()== **添加多個可能的答案**

if ($("input:first").val().toUpperCase() == "UNITED STATES" || $("input:first").val().toUpperCase() == "USA" || $("input:first").val().toUpperCase() == "AMERICA") { 
       $("#check").text("Correct!").show().fadeOut(5000); 
       return true; 

if ($("input:first").val().toUpperCase() == ("UNITED STATES","USA","AMERICA")) { 
       $("#check").text("Correct!").show().fadeOut(5000); 
       return true; 

這個只驗證在這種情況下,美國最後的答案。

回答

11

使用$.inArray()

if($.inArray($("input:first").val().toUpperCase(), [ "UNITED STATES", "USA", "AMERICA" ]) > -1) { ... 

演示:http://jsfiddle.net/4ar2G/

+1

'$ .inArray()'只是爲了'Array.prototype墊片。 indexOf'。 – Alnitak 2012-04-26 16:01:20

+0

@Alnitak我認爲這是jQuery填補了空白。好信息! – iambriansreed 2012-04-26 16:05:29

+0

@iambriansley好吧,它有點兒,它填補了舊的蹩腳瀏覽器,沒有'Array.prototype.indexOf' ...--) – Alnitak 2012-04-26 16:06:18

2

試試這個:

if($.inArray($("input:first").val().toUpperCase(), ["UNITED STATES","USA","AMERICA"]) > -1){ 
      $("#check").text("Correct!").show().fadeOut(5000); 
      return true; 
} 
4

,其中鍵是所需的值和in運營商可以使用一個對象:

var matches = { 'UNITED STATES': 1, 'USA': 1, 'AMERICA': 1 }; 

if ($("input:first").val().toUpperCase() in matches) { 
    ... 
} 

根據我的經驗,這實際上是令人驚訝的高效率 - Javascript在查找對象的屬性方面非常出色,它避免了線性陣列掃描,因此對於較大的陣列,它的編號爲O(log n)而不是O(n)

不要使用,如果你已經搞亂Object.prototype,但!

3

爲了平衡起見,相當於非jQuery的方式(因爲jQuery並不自動意味着更好):

if(["UNITED STATES", "USA", "AMERICA"].indexOf($('input:first').val().toUpperCase()) > -1) { 
    $("#check").text("Correct!").show().fadeOut(5000); 
    return true; 
} 
+1

[-1不夠JQUERY](http://i.stack.imgur.com/ssRUr.gif) – JJJ 2012-04-26 16:03:25