由于数组语法,Javascript警报可能无法正常工作

时间:2013-09-30 23:14:53

标签: javascript alert

这是我第一次尝试将数组合并到我的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;
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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