Javascript 基于ajax响应中的值设置复选框状态

Javascript 基于ajax响应中的值设置复选框状态,javascript,jquery,ajax,checkbox,Javascript,Jquery,Ajax,Checkbox,我通过ajax/jquery从数据库中获取值(1或0),我想根据每个值返回的值设置一组复选框选中状态 首先,我要设置所有复选框的值。然后,我运行一个函数,根据这些值设置复选框选中状态。当我尝试此操作时,所有复选框都会被选中,无论其值如何: 我的Ajax响应片段(jQuery) .success(函数(响应){ $('input').removeClass('error').next('errormessage').html(''); 如果(!response.errors&&response.r

我通过ajax/jquery从数据库中获取值(1或0),我想根据每个值返回的值设置一组复选框选中状态

首先,我要设置所有复选框的值。然后,我运行一个函数,根据这些值设置复选框选中状态。当我尝试此操作时,所有复选框都会被选中,无论其值如何:

我的Ajax响应片段(jQuery)

.success(函数(响应){
$('input').removeClass('error').next('errormessage').html('');
如果(!response.errors&&response.result){
$.each(response.result、函数(索引、值){
$(“#复选框1”).prop('value',value[2]);
$(“#checkbox2”).prop('value',value[3]);
$(“#checkbox3”).prop('value',value[4]);
$(“#复选框4”).prop('value',value[5]);
});
$(“#div:checkbox”)。每个(函数(){
if($(this.attr('value','1')){
$(this.attr('checked',true);
}
其他的
if($(this.attr('value','0')){
$(this.attr('checked',false);
}
}); 
}否则{
$.each(response.errors、函数(索引、值){
$('input[name*='+index+']')。addClass('error')。在(''+value+'')之后
});
}
});
要正确地“选中/取消选中”复选框,您应该使用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);
             }
要正确地“选中/取消选中”复选框,您应该使用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);
             }

您可能试图使用字符串将复选框的值设置为false。这是行不通的。你需要它是一个booelan真/假或0/1。。值“0”将设置复选框“已选中”。请参见示例以及第二个复选框如何保持选中状态

$(文档).ready(函数(){
$(“#chkbox1”).prop(“选中”,0);
$(“#chkbox2”).prop(“选中”、“0”);
$(“#chkbox3”).prop(“选中”,1);
$(“#chkbox4”).prop(“选中”、“1”);
$(“#chkbox5”).prop(“选中”,parseInt(“0”);
});

复选框1
复选框2
复选框3
复选框4

复选框5

您可能试图使用字符串将复选框的值设置为false。这是行不通的。你需要它是一个booelan真/假或0/1。。值“0”将设置复选框“已选中”。请参见示例以及第二个复选框如何保持选中状态

$(文档).ready(函数(){
$(“#chkbox1”).prop(“选中”,0);
$(“#chkbox2”).prop(“选中”、“0”);
$(“#chkbox3”).prop(“选中”,1);
$(“#chkbox4”).prop(“选中”、“1”);
$(“#chkbox5”).prop(“选中”,parseInt(“0”);
});

复选框1
复选框2
复选框3
复选框4

复选框5

您没有检查当前值,而是将所有复选框的值设置为1

if ($(this).attr('value', '1')){ 
.attr('属性名称',[要设置的新值])

所以你用错了这个函数。要获得价值,请尝试

if ($(this).attr('value')){

这里您将得到1或0,正如您所说,在ajax之后您将从服务器获得1&0。

您没有检查当前值,而是将所有复选框的值设置为1

if ($(this).attr('value', '1')){ 
.attr('属性名称',[要设置的新值])

所以你用错了这个函数。要获得价值,请尝试

if ($(this).attr('value')){


在这里,您将获得1或0,正如您所说,在ajax之后,您将从服务器获得1&0。

在设置值时使用“选中”而不是“值”
.prop('checked',true)
。。但是我只想在值为1时检查它,如果值为0,我不想检查它,但是1和0是真的还是假的。将相应地设置该复选框。我还假设第一个
#选中的
。。复选框在哪里。。。我可能错了。仍然0/1是切换复选框,所以用0设置复选框同样有效。哦,我不知道!让我试试,让你知道。谢谢那也没用。我尝试了
$(“#checkbox1”).attr('checked',value[2])
$(“#checkbox1”).prop('checked',value[2])当我控制台时。记录我得到的值1和0等。设置值时使用“选中”而不是“值”
.prop('checked',true)
。。但是我只想在值为1时检查它,如果值为0,我不想检查它,但是1和0是真的还是假的。将相应地设置该复选框。我还假设第一个
#选中的
。。复选框在哪里。。。我可能错了。仍然0/1是切换复选框,所以用0设置复选框同样有效。哦,我不知道!让我试试,让你知道。谢谢那也没用。我尝试了
$(“#checkbox1”).attr('checked',value[2])
$(“#checkbox1”).prop('checked',value[2])当我控制台时。记录我得到的值1和0等。谢谢安东尼奥。我试过了,但是所有的复选框都保持选中状态。谢谢安东尼奥。我试过了,但所有的复选框都保持选中状态。为什么在代码段中选中了复选框4?如何将字符串转换为布尔值?我刚刚尝试了
parseBool(值[0])
,但是我得到了一个
parseBool没有定义
error,它也不起作用。我忘了提到我正在使用引导。这会改变与复选框的交互方式吗?不会。。。我想您已经集成了jQuery,这就是您所需要的。我在复选框中添加了一个示例。我不知道,伙计。也许你应该从控制台上粘贴一段结果。谢谢你的帮助,丹尼尔,非常感谢:)我现在要梳理一下我所有的代码,以确保我没有做任何愚蠢的事情,因为你的代码片段显然是