3

我通过执行以下操作实现了这一点,但作为 javascript 和 jquery 的新手,我想知道是否有更短的方法来添加多个可能的值。

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;

在这种情况下,这仅验证了美国的最后一个答案。

4

4 回答 4

11

使用$.inArray()

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

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

于 2012-04-26T15:54:44.940 回答
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,请不要使用!

于 2012-04-26T15:57:31.183 回答
3

为了平衡起见,等效的非jQuery方式(因为jQuery不会自动意味着更好):

if(["UNITED STATES", "USA", "AMERICA"].indexOf($('input:first').val().toUpperCase()) > -1) {
    $("#check").text("Correct!").show().fadeOut(5000);
    return true;
}
于 2012-04-26T15:59:07.590 回答
2

试试这个:

if($.inArray($("input:first").val().toUpperCase(), ["UNITED STATES","USA","AMERICA"]) > -1){
            $("#check").text("Correct!").show().fadeOut(5000);
            return true;
}
于 2012-04-26T15:56:19.700 回答