[英]Using jQuery $.inArray to validate whether or not value exists in JSON
所有。
我正在嘗試使用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或更高值並觸發“您知道了!” 附加到
元件。 但是,目前,它會觸發“您不知道!”
我已經使用console.log查看zipcode變量是否被刪除或未保存,但這似乎不是問題。
任何想法如何進行?
到了深夜,我知道這段代碼不好。 但這確實滿足您的要求! 但是,我沒有使用$.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');
}
});
演示: http : //jsfiddle.net/j476sruj/
您正在嘗試將字符串值與對象數組進行比較。 這不能簡單地因為它們甚至不是同一類型,更不用說值匹配了。
您需要檢查數組中每個object
的ZIPCode
值。
jQuery中方便使用的實用函數是$.grep()
,它將根據條件過濾數組並返回一個新數組。 如果新的過濾數組沒有長度,則沒有匹配項,否則匹配。
var zipcode= parseInt( $('#zipcode').val(),10) ;
/* should validate string length and valid number before wasting time in folowing loop*/
var validZip=$.grep(theCodes, function(item){
return item.ZIPCode == zipcode;
}).length; /* use length of array as truth test */
$("p").text( validZip ? "Valid Zip" : 'Ooops try again');
var theCodes = [{“ ZIPCode”:20001,“ Market”:“ Washington DC”},{“ ZIPCode”:20004,“ Market”:“ Washington DC”},{“ ZIPCode”:20005,“ Market”:“華盛頓特區“},{”郵政編碼“:20006,”市場“:”華盛頓特區“},{”郵政編碼“:20007,”市場“:”華盛頓特區“},{”郵政編碼“:20008,”市場“: “華盛頓特區”},{“郵政編碼”:20009,“市場”:“華盛頓特區”},{“郵政編碼”:20012,“市場”:“華盛頓特區”}]
console.log($.inArray('{"ZIPCode":20001,"Market":"Washington DC"}', theCodes));
// output -1
就像您所做的那樣'var zipcode = $('form')。find('input [name =“ zipcode”]')。val();' 獲取輸入,但是值的類型是字符串,因此$ .inArray始終輸出-1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.