我有一个json数组值,它们通过ajax调用动态填充并返回。此json数据可以包含任意数量的对象。例如,我的ajax调用返回了一系列宝石['ruby','emerald','topaz']。
在我的html页面上,我在页面的某处有一个文本输入,用户可以在其中添加新的gem。当用户添加一个gem(通过按钮点击)时,我想看看它是否已存在于我的json数组中。因此,如果用户输入'diamond',则最终应检查复选框。
我的代码:
function AddGem(data){ //data is the dynamically populated data from my ajax call
var gem = $("#Gem").val(); // this the text input value of the textbox where a user can enter a gem. I am checking the json array values against this value
$("#Button").click(function() { //user clicks a button to add a gem to the input textbox
$.each(data, function (item) {
if(item === 'gem')
{
$("#Oldform").prop("checked", false); // leave checkbox unchecked
} else
{
$("#Oldform").prop("checked", true); //check check box
}
});
});
}
如何执行json数组的搜索?我是否需要先创建一个空数组,即。 data = [];?谢谢,
答案 0 :(得分:0)
我认为你想使用gem
变量而不是'gem'
字符串。
类似的东西:
$("#Button").click(function() {
$.each(data, function (item) {
$("#Oldform").prop("checked", item === gem);
});
});
但请考虑使用indexOf
:
$("#Button").click(function() {
$("#Oldform").prop("checked", data.indexOf(gem)>-1);
});
答案 1 :(得分:0)
为了搜索json数据,我使用了带有break语句的for循环。当数组中的元素(数据)与文本输入匹配时,for循环将退出。
var jsonData = null;
function AddGem(data){
jsonData = data;
$("#Button").click(function(){
for (var i = 0; i < data.length; i++){
if (data[i] == $("#Gem").val())
{
//leave check box unchecked
break;
}
else{
//check check box
}
}
});
}