在返回true之前检查输入值是否与数组中的任何值匹配

时间:2013-05-29 18:44:47

标签: javascript

我正在尝试使用javascript验证表单。在返回true之前检查输入值是否与数组中的任何值匹配。

这是我到目前为止所写的一个例子。但这似乎行不通。

<script type='text/javascript'>

function checkForm() 
{ 

var agent = document.getElementById('agent').value;

var myArray = new Array() 
  myArray[0] = 'First Agent';
  myArray[1] = 'Second Agent';
  myArray[2] = 'Third Agent';

if (agent != myArray) 
{
  alert("Invalid Agent");
  return false;
} 

else 
{
  return true;
}
}

<form>
<fieldset>
Agents Name*
<input type="text" size="20" name="agent" id="agent">
</fieldset>
</form>

4 个答案:

答案 0 :(得分:3)

你需要创建一个for结构来传递你的整个数组,当值匹配时你返回true,否则返回false。像这样:

for (var i = 0; i < myArray.length; i++) {
    if (agent == myArray[i])
        return true;
}
return false;

答案 1 :(得分:0)

function checkForm() {
    var agent = document.getElementById('agent').value;
    var myArray = ['First Agent', 'Second Agent', 'Third Agent'];
    if(myArray.indexOf(agent) == -1) //returns the index of the selected element 
    {
        alert("Invalid Agent");
        return false; // if you return false then you don't have to write the else statement
    }
    return true;
}

答案 2 :(得分:-1)

“agent!= myArray”将您的字符串与数组进行比较,而不是将其与内容进行比较。 看看这篇文章: Determine whether an array contains a value

答案 3 :(得分:-1)

使用Underscore / lodash你可以做到:

if (_.indexOf(myArray,agent) == -1) 
{ 
   //alert invalid agent    
   ...
}