所有
我正在尝试使用jQuery' $ .inArray方法验证JSON数组中是否存在特定值。
目前,JS脚本上方有一个表单字段,用于接收用户输入,并在输入或单击“提交”时,'应该根据JSON验证输入。代码如下:
<form>
<label for="zipcode">Enter your zipcode</label>
<input type="text" id="zipcode" name="zipcode"> </br>
<input id="user_info" type="submit">
</form>
<p></p>
...
$('document').ready(function(){
$('#user_info').on("click", function(e){
e.preventDefault();
var zipcode = $('form').find('input[name="zipcode"]').val();
if($.inArray(zipcode, theCodes)!==-1) {
$("p").text("You got it!");
} else {
$("p").text("You don't got it!");
}
}); //closes click handler
}); //closes document.ready
var theCodes = [{"ZIPCode":20001,"Market":"Washington DC"},
{"ZIPCode":20004,"Market":"Washington DC"},
{"ZIPCode":20005,"Market":"Washington DC"},
{"ZIPCode":20006,"Market":"Washington DC"},
{"ZIPCode":20007,"Market":"Washington DC"},
{"ZIPCode":20008,"Market":"Washington DC"},
{"ZIPCode":20009,"Market":"Washington DC"},
{"ZIPCode":20012,"Market":"Washington DC"}]
正如您所看到的,我们的想法是,如果用户输入的值与JSON数组中的值匹配,则应返回0或更高并触发&#34;您已获得它!&#34;附加到
元素。但是,目前它触发了#34;你没有得到它!&#34;
我已经使用console.log来查看是否删除了zipcode变量,但是这似乎不是问题。
任何想法如何进行?
答案 0 :(得分:1)
这是深夜,我知道这段代码并不好;但它做你所要求的!但是,我没有使用$.InArray()
,因为它不适用于我可以说...
$('#user_info').on('click', function(){
var IsInArr = function(needle, haystack){
for (var i = 0; i < haystack.length; i++) {
if (haystack[i].ZIPCode == needle) {
return true;
}
}
return false;
};
if (IsInArr($('#zipcode').val(), theCodes)) {
$('p').text('You got it');
} else {
$('p').text('You don\'t got it');
}
});
答案 1 :(得分:1)
您正在尝试将字符串值与对象数组进行比较。这不能仅仅因为它们甚至不是同一类型,更不用说匹配值了。
您需要检查数组中每个ZIPCode
的{{1}}值。
jQuery中的一个方便的实用函数是object
,它将根据条件过滤数组并返回一个新数组。如果新过滤的数组没有长度则没有匹配,否则就有。
$.grep()
答案 2 :(得分:0)
var theCodes = [{“ZIPCode”:20001,“Market”:“Washington DC”}, {“ZIPCode”:20004,“市场”:“华盛顿特区”}, {“ZIPCode”:20005,“市场”:“华盛顿特区”}, {“ZIPCode”:20006,“市场”:“华盛顿特区”}, {“ZIPCode”:20007,“市场”:“华盛顿特区”}, {“ZIPCode”:20008,“市场”:“华盛顿特区”}, {“ZIPCode”:20009,“市场”:“华盛顿特区”}, {“ZIPCode”:20012,“市场”:“华盛顿特区”}}
console.log($.inArray('{"ZIPCode":20001,"Market":"Washington DC"}', theCodes));
// output -1
就像'var zipcode = $('form')。find('input [name =“zipcode”]')。val();'获取输入,但值的类型是字符串,因此$ .inArray始终输出-1