1

这是我第一次尝试将数组合并到我的 javascript 代码中。我将其与包含文本输入的表单一起使用,其中只能提交蓝色、黄色、灰色、橙色或粉红色的颜色,否则应该有警报。显然我犯了一些错误,因为我的值没有被拾取......任何东西都可以输入到输入#color并且仍然可以提交表单,无论我输入什么都不会填充任何警报。代码如下。谢谢你。

    }   
  // Verifies Colors 
  var colors = ["Blue", "Yellow", "Gray", "Orange", "Pink"];
      if ($('#color').val() != colors) {
          alert("These are not the right colors!");
          return false;       
        }
 return true;
}
4

2 回答 2

1

尝试

if(colors.indexOf($("#color").val()) == -1 ){
    alert("These are not the right colors!");
    return false;
}

[编辑] 这是一个假设,我认为#colors 是一个输入类型=“文本”,或者是一个选择,在任何一种情况下,我都建议注意单词的大小写,考虑到输入可能都是小写或全大写或两者的混合。

于 2013-09-30T23:16:22.793 回答
1

由于您已经在使用 jquery。

var colors = ['blue', 'red', 'whatever'];
if ($.inArray($("#color").val(), colors) < 0) {
    alert("These are not the right colors!");
    return false;
}

对于 Rafael 和 Kyle 来说,尽管 jquery 将使用 indexOf,但如果可以的话,来自 jquery 源

inArray: function( elem, arr, i ) {
    var len;

    if ( arr ) {
        if ( core_indexOf ) {
            return core_indexOf.call( arr, elem, i );
        }

        len = arr.length;
        i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;

        for ( ; i < len; i++ ) {
            // Skip accessing in sparse arrays
            if ( i in arr && arr[ i ] === elem ) {
                return i;
            }
        }
    }

    return -1;
}

其中 core_indexOf 是 array.indexOf 的别名

core_indexOf = core_deletedIds.indexOf
于 2013-09-30T23:19:45.330 回答