#jquery #ajax #json #checkbox
#jquery #ajax #json #флажок
Вопрос:
У меня есть функция с именем ‘getData’, которая содержит вызов ajax, который успешно возвращает мои данные (динамически созданный список фруктов) через json. У меня есть другая функция под названием ‘adfruit’, которая должна устанавливать флажок, когда пользователь нажимает кнопку, которая вводит текстовое значение в текстовое поле, и это значение НЕ соответствует ни одному из значений, содержащихся в моих данных json.
Например, если данные, возвращаемые из вызова ajax, имеют значение {‘orange’, ‘apple’, ‘pear’}, и пользователь нажимает кнопку, которая добавляет ‘banana’ в текстовое поле, мой флажок должен быть установлен.
Ниже то, что я пробовал до сих пор:
function AddFruit(data) {
var fruit = $("#Fruit").val(); //the value of input text box that gets populated when a user clicks '#ButtonAdd' button.
$("#ButtonAdd").click(function() {
$.each(data, function (item) {
if ($('fruit:contains(" data[item] ")'))
{
$("#Oldform").prop ("checked", false);
} else
{
$("#Oldform").prop ("checked", true);
}
});
});
}
getData().done(AddFruit); // when the ajax call is successfully completed, run the AddFruit function.
Комментарии:
1. пространство @AdamMerrifield здесь не имеет значения…
2. @AdamMerrifield — он соответствует своим пробелам между
prop
и (. Если он хочет это сделать именно так, я не против. Меня это тоже беспокоит, но у меня есть свои причуды, и это не добавляет к разговору. Возможно, ему будет легче читать. пожимание плечами
Ответ №1:
Вы забыли ;
после вызова prop()
.
Ответ №2:
Для поиска данных, возвращенных из вызова ajax, необходим цикл for с оператором break . Когда элемент в данных сопоставляется с введенным текстом, цикл for завершается.
var ajaxData = null;
function AddFruit(data){
ajaxData = data;
$("#Button").click(function(){
for (var i = 0; i < data.length; i ){
if (data[i] == $("#Fruit").val())
{
//leave check box unchecked
break;
}
else{
//check check box
}
}
});
}