我想根据逗号(,)分隔的文本框中的id传递选择复选框,如(1,2,3,..)。 我们怎样才能在jquery中实现这一点?
function cblist_check() {
if ($('input[type=text][id$=rate]').val() != "") {
var arrate = $('input[type=text][id$=rate]').val().split(',');
for (var i in arrate) {
$('[id$=listRates] input[type=checkbox]').attr("checked")
}
}
}

<div style='position:relative;'>
<input type='checkbox' id='1' data-display-name='Rack/General' />
<label for='1'>Rack/General</label>
<img id='img_1' class='checkboxFixIconLeft' />
</div>
<div style='position:relative;'>
<input type='checkbox' id='4' data-display-name='Government' />
<label for='4'>Government</label>
<img id='img_4' class='checkboxFixIconLeft' />
</div>
<div style='position:relative;'>
<input type='checkbox' id='6' data-display-name='Package' />
<label for='6'>Package</label>
<img id='img_6' class='checkboxFixIconLeft' />
</div>
<div style='position:relative;'>
<input type='checkbox' id='3' data-display-name='Family' />
<label for='3'>Family</label>
<img id='img_3' class='checkboxFixIconLeft' />
</div>
&#13;
答案 0 :(得分:0)
你只需要将值与#selector,
连接起来 var arrate = $('input[type=text][id$=rate]').val().split(',');
for (var i in arrate) {
$('#' + arrate[i]).prop("checked",true)
}
答案 1 :(得分:0)
您不必迭代数组并单独设置检查。您可以使用.map()
函数获取所有元素,然后一次性设置它们:
var arrate = $('input[type=text][id$=rate]').val().split(',');
var targetcheckboxes =$.map( arrate, function(i) { return document.getElementById(i) } );
$(targetcheckboxes).prop('checked', true);
答案 2 :(得分:0)
function cblist_check() {
var s = ',' + $('input[type=text][id$=rate]').val() + ',';
$('input[type=checkbox]').each(function(i, x){
$(x).prop("checked", s.indexOf(',' + $(x).attr('id') + ',') > -1);
});
}