仅供参考:这是一个简单的测验,每个答案只有一个输入字段。
我有以下Javascript if语句来检查输入到输入字段的值是否正确(在这种情况下,如果输入的值是'england')。
$('input').keyup(function () {
if ($(this).val().toLowerCase() == 'england') {
//Stuff
} else {
//Other Stuff
};
});
但是,我想允许替代拼写,所以我需要为每个问题提供一些可能的答案 - 为此使用数组似乎是明智的......
var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";
如何更改if语句以说'如果输入字段值等于数组中的任何值,则执行以下操作'?
任何帮助将不胜感激!谢谢。
答案 0 :(得分:4)
您可以使用.inArray()
执行此操作:
if ($.inArray($(this).val(), ans1) > -1) {
//Stuff
}
此处,代码$.inArray($(this).val(), ans1)
将在数组England
中搜索示例ans1
的指定值并返回其索引(如果未找到,则返回-1)。
<强>更新强>
对于区分大小写的搜索:
<强> JS:强>
if ($.inArray($(this).val().toLowerCase(), ans1) > -1) {
//Stuff
}
答案 1 :(得分:3)
您可以使用数组的'indexOf'方法,如果数组中不存在该值,则返回-1:
//if answer is in array
if(array.indexOf(answer) != -1){
//do stuff
}else{
//do stuff
}
答案 2 :(得分:3)
试试这个
if(this.value.match(/^(England|Englund|Ingland)$/i))
使用regex和gi修饰符不区分大小写
答案 3 :(得分:0)
这样做
$('input').keyup(function () {
var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";
for(int i=0;i<ans1.length;i++)
{
if ($(this).val().toLowerCase() ==ans1[i]) {
//Stuff
} else {
//Other Stuff
};
}
});
答案 4 :(得分:0)
也许您可以考虑检查数组中的每个元素:
var ans1 = new Array();
ans1[0] = "England";
ans1[1] = "Englund";
ans1[2] = "Ingland";
$('input').keyup(function () {
for (var i = 0; i < ans1.length; i++) {
if ($(this).val().toLowerCase() == ans1[i]) {
//Stuff
} else {
//Other Stuff
};
}
});
不是最美丽的解决方案,但它应该有效。
答案 5 :(得分:0)
jQuery提供$.inArray
:
var found = $.inArray('specialword', words) > -1;
请注意,inArray返回找到的元素的索引,因此0表示该元素是数组中的第一个元素。 -1表示未找到该元素。
将拼写放在这样的数组中:
words: [
"England"
"Inglund"
"Ingland"
]
如果找到这个词,发现将是真的。
如果您希望匹配单词的索引从行中删除> -1
。
您的代码将是这样的:
$('input').keyup(function () {
var found = $.inArray($(this).val(), words);
found > -1 ? //Stuff : //otherStuff;
});