1

我正在尝试使用 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

4 回答 4

3

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

for (var i = 0; i < myArray.length; i++) {
    if (agent == myArray[i])
        return true;
}
return false;
于 2013-05-29T18:49:22.203 回答
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;
}
于 2013-05-29T18:46:12.580 回答
-1

"agent != myArray" 将您的字符串与数组进行比较,而不是与其内容进行比较。看这个帖子: 判断一个数组是否包含值

于 2013-05-29T18:50:41.740 回答
-1

使用 Underscore/lodash 你可以:

if (_.indexOf(myArray,agent) == -1) 
{ 
   //alert invalid agent    
   ...
}
于 2016-01-18T00:24:21.647 回答