当我循环遍历循环时,我正在尝试匹配,如果数组包含用户输入的值,如果是,那么消息国家存在。但这不起作用。这是代码:
<input type="text" id="topics" >
<a id="submit-button" href="#">button</a>
$('#submit-button').click(function(){
var isCountry = $("#topics").val();
$.each(topics, function(i, item) {
if(isCountry == topics[i].value){
alert("country exists");
}else{
alert("country doesn't exists");
}
});
});
完整代码在这里:http://jsfiddle.net/4XHPY/
谢谢你们答案 0 :(得分:2)
您的代码正常运行。它只是循环遍历您的数组(存储在主题变量中),如果输入的值等于第i个值,则会在每个步骤上发出消息。因此,如果您进入阿尔及利亚,那么在第三次迭代中您将看到一条消息“国家存在”,在所有其他迭代中您将看到“国家不存在”。
答案 1 :(得分:1)
在你的代码中,每个循环都会被迭代,直到主题对象的长度为止,这就是为什么要多次发出警报的原因。 而不是那样,使用以下脚本:
$('#submit-button').click(function(){
var isCountry = $("#topics").val();
var filtered = $(topics).filter(function(){
return this.value == isCountry;
});
if(filtered.length == 0){
alert("country doesn't exists");
}else{
alert("country exists");
}
});
以下是工作演示:http://jsfiddle.net/4XHPY/12/
答案 2 :(得分:0)
您可以使用它,也可以使用小写,这似乎更合适:
$('#submit-button').click(function () {
var isCountry = $("#topics").val(),
exists = false;
$.each(topics, function (i, item) {
if (isCountry.toLowerCase() == topics[i].value.toLowerCase()) {
exists = true;
return false;
}
});
if (exists) alert("country exists");
else alert("country doesn't exists");
});
答案 3 :(得分:0)
根据您的要求,您的代码在小提琴中正常工作。
如果输入值在数组中,则显示警告消息“country exists”。但由于您正在为“主题”数组的每个索引发出循环警报消息,因此它还会显示“国家/地区不存在”警报以及“国家/地区存在”警报消息。