我通过ajax / jquery从我的数据库中获取值(1或0),并且我想设置一组复选框检查状态,具体取决于为每个返回的值。
首先,我正在设置所有复选框的值。然后我运行一个函数来根据值设置复选框检查状态。当我尝试这个时,无论值是什么,都会检查所有复选框:
我的Ajax响应片段(jQuery)
.success(function(response) {
$('input').removeClass('error').next('.errormessage').html('');
if(!response.errors && response.result) {
$.each(response.result, function( index, value) {
$("#checkbox1").prop('value',value[2]);
$("#checkbox2").prop('value',value[3]);
$("#checkbox3").prop('value',value[4]);
$("#checkbox4").prop('value',value[5]);
});
$("#div :checkbox").each(function () {
if ($(this).attr('value', '1')){
$(this).attr('checked', true);
}
else
if ($(this).attr('value', '0')){
$(this).attr('checked', false);
}
});
} else {
$.each(response.errors, function( index, value) {
$('input[name*='+index+']').addClass('error').after('<div class="errormessage">'+value+'</div>')
});
}
});
答案 0 :(得分:0)
要正确“检查/取消选中”chekcbox,您应该使用jQuery函数prop('checked',true)
或prop('checked',false)
。
以这种方式更改if / else语句:
if ($(this).attr('value', '1')){
$(this).prop('checked', true);
}
else
if ($(this).attr('value', '0')){
$(this).prop('checked', false);
}
答案 1 :(得分:0)
您可能尝试使用字符串设置复选框false的值。这不起作用。你需要它是一个booelan真/假或0/1 ..值&#34; 0&#34;将设置复选框&#34;选中&#34;。请参阅示例以及第二个复选框如何保持选中状态。
$(document).ready(function() {
$("#chkbox1").prop("checked", 0);
$("#chkbox2").prop("checked", "0");
$("#chkbox3").prop("checked", 1);
$("#chkbox4").prop("checked", "1");
$("#chkbox5").prop("checked", parseInt("0"));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<label>
<input id="chkbox1" type="checkbox" name="chk" checked />checkbox1
</label>
<label>
<input id="chkbox2" type="checkbox" name="chk" checked/>checkbox2
</label>
<label>
<input id="chkbox3" type="checkbox" name="chk" />checkbox3
</label>
<label>
<input id="chkbox4" type="checkbox" name="chk" />checkbox4
</label>
<p>
<label>
<input id="chkbox5" type="checkbox" name="chk" checked />checkbox5
</label>
</p>
&#13;
答案 2 :(得分:0)
您没有检查当前值是否为所有复选框将值设置为1;
if ($(this).attr('value', '1')){
.attr(&#39;属性名称&#39;,[要设置的新值]);
所以你以错误的方式使用这个功能。要获得价值,请尝试
if ($(this).attr('value')){
在这里你会得到1或0,因为你说你得到1&amp; ajax之后来自服务器的0。