2012-04-26 2 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

+0

@Alnitak Я думал, что это jQuery, заполняющий пробел. Хорошая информация! – iambriansreed

+0

@iambriansreed хорошо, это любопытно, он заполняет пробел для старых дерьмовых браузеров, у которых нет 'Array.prototype.indexOf' ... ;-) – Alnitak

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

Смежные вопросы