我有几个具有相同名称的复选框,以及功率为2的值:
<input type=checkbox name=mycheckbox value=1>Some text 1
<input type=checkbox name=mycheckbox value=2>Some text 2
<input type=checkbox name=mycheckbox value=4>Some text 3
<input type=checkbox name=mycheckbox value=8>Some text 4
<input type=checkbox name=mycheckbox value=16>Some text 5
<input type=checkbox name=mycheckbox value=32>Some text 6
存储在数据库中的值是所选复选框的按位 OR ,因此如果选中某些文本3和某些文本6,则数据库中的值将为32 | 4 = 36
。
我使用Ajax调用从数据库加载此值。使用jQuery根据数字检查相应的复选框最简单或最好的方法是什么?
我更习惯于编写脚本并接近它:
for (i = 1; i <= 32; i*=2)
if ((ajaxValue & i) == i)
等
但理想情况下,jQuery可以更轻松地完成它,并按值检查复选框。
答案 0 :(得分:2)
YOUR_VALUE
来自数据库。
$('input[name=mycheckbox][value="'+ YOUR_VALUE +'"]').prop('checked', true);
根据您的更新问题
试试这个:
var x = [];
$('input[name=mycheckbox]').each(function() {
x.push(this.value);
});
var len = x.length,
target = 36; // this is the value you get from ajax (integer)
for (i = 0; i <= len - 1; i++) {
for (j = len - 1; j > i; j--) {
var value = x[j + i] | x[i];
if ( value === target) {
$('input[name=mycheckbox][value="' + x[i] + '"],
input[name=mycheckbox][value="' + x[j + i] + '"]')
.prop('checked', true);
}
}
}
的 DEMO 强> 的
答案 1 :(得分:0)
$(function () {
$('input[name=mycheckbox]').each(function () {
// Your code there like if ($(this).val() ....
if ($(this).val() == someValue) $(this).attr('checked', 'checked'); // Example of make the checkbox checked
});
});