根据ajax响应中的值设置复选框状态

时间:2016-03-17 15:03:07

标签: javascript jquery ajax checkbox

我通过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>')
            });

        }
    });

3 个答案:

答案 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;。请参阅示例以及第二个复选框如何保持选中状态。

&#13;
&#13;
$(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;
&#13;
&#13;

答案 2 :(得分:0)

您没有检查当前值是否为所有复选框将值设置为1;

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

.attr(&#39;属性名称&#39;,[要设置的新值]);

所以你以错误的方式使用这个功能。要获得价值,请尝试

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

在这里你会得到1或0,因为你说你得到1&amp; ajax之后来自服务器的0。