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;

これにより、この場合はAMERICAの最後の回答のみが検証されます。

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 に答える