Как я могу установить флажки на основе значений? - PullRequest
12 голосов
/ 29 ноября 2011

Я возвращаю структуру данных JSON, которую я разделил и заполнил свой массив следующим образом:

var arrayValues = data.contents.split('|');

// arrayValues = 1,3,4

Как я могу установить соответствующие флажки на основе значений массива?

Мой HTMLвыглядит так:

 <div id="divID">
     <input type="checkbox" name="test" value="1" /> Test 1<br />
     <input type="checkbox" name="test" value="2" /> Test 2<br />
     <input type="checkbox" name="test" value="3" /> Test 3<br />
     <input type="checkbox" name="test" value="4" /> Test 4<br />
     <input type="checkbox" name="test" value="5" /> Test 5<br />                           
 </div>

Ответы [ 5 ]

18 голосов
/ 29 ноября 2011

Попробуйте это с помощью селектора атрибута

$.each(arrayValues, function(i, val){

   $("input[value='" + val + "']").prop('checked', true);

});
10 голосов
/ 29 ноября 2011

Javascript

$.each(arrayValues, function (index, value) {
  $('input[name="test"][value="' + value.toString() + '"]').prop("checked", true);
});
1 голос
/ 16 июня 2017

Проще:

$('input[name="test"]').val(arrayValues);

Это проверит значения из массива и отменит выбор других.

Из документа JQuery: http://api.jquery.com/val/

val () позволяет передавать массив значений элементов. Это полезно при работе с объектом jQuery, содержащим такие элементы, как , и

s внутри
1 голос
/ 29 ноября 2011

Вы можете перебрать свой массив и выполнить поиск атрибутов в jQuery

var i = 0;
while (arrayValues.length < i) {
  var val = arrayValues[i];
  $('#divID input[value="' + val + '"]').prop('checked', 'checked');
  i++;
}

документы: http://api.jquery.com/attribute-equals-selector/

0 голосов
/ 29 ноября 2011

Хорошо, мне понадобилось время, чтобы разобраться в моей ошибке в коде. Я полагаю, что на этот вопрос теперь ShankarSangoli .

Надеюсь, вы не против, чтобы я опубликовал свое решение в любом случае. Мне просто любопытно, если это хуже для производительности и т. Д.

var arrayValues = new Array(1,3,4);

$('#divID input').filter(function(){
    return ($.inArray( parseInt($(this).attr('value')), arrayValues)) != -1;
}).attr('checked', 'checked');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...