选中并取消选中复选框

时间:2015-08-12 15:46:26

标签: jquery

我的复选框有问题。 我试图创建一个脚本,点击一个复选框来计算所有复选框, 并且每次检查都将其值分配给数组,并且对于未选中的数组分配0。

例如,如果我们有五个复选框,则检查最后两个,数组将为:0,0,0,4,5。 如果您再选中一个复选框(例如第一个复选框),则结果为:1,0,0,4,5。 如果取消选中最后两个,结果为:1,0,0,0,0。

这个array(1, 0, 0, 0, 0)我通过数据库中的Ajax发送,这样当我打开相同的订单时, 第一个复选框已经过检查。 无论如何,谢谢你的帮助。

<input type="checkbox" name="service[]" value="1">service 1<br>
<input type="checkbox" name="service[]" value="2">service 2<br>
<input type="checkbox" name="service[]" value="3">service 3<br>
<input type="checkbox" name="service[]" value="4">service 4<br>
<input type="checkbox" name="service[]" value="5">service 5<br>

$(document).ready(function() {
    $("input[name='service[]']").click(function(){
        var favorite = new Array();
        $.each($("input[name='service[]']:checked"), function(){            
            favorite.push($(this).val());
        });
        alert("My services are: " + favorite.join(", "));
    });
});

http://jsfiddle.net/w7p5ufy8/3/

5 个答案:

答案 0 :(得分:1)

    $(document).ready(function() {
            $("input[name='servis[]']").click(function(){
                var favorite = new Array();
                $.each($("input[name='servis[]']"), function(){            
                    if($(this).prop('checked')){
                    favorite.push($(this).val());
                    }else{
                    favorite.push(0);
                    }
                });
                console.log("My favourite sports are: " + favorite.join(", "));
 });
});

我更改输入[name =&#34; ali_servis []&#34;]并添加if in each for print 0

链接JsFiddle:https://jsfiddle.net/w7p5ufy8/5/

答案 1 :(得分:1)

如果您从:checked移除$.each($("input[name='service[]']:checked"),则可以保留现有代码的大部分内容,只需更改一行。

变化:

favorite.push($(this).val());

favorite.push($(this).is(':checked') ? $(this).val() : 0);

或:

favorite.push(this.checked ? this.value : 0);

<强> jsFiddle example

答案 2 :(得分:1)

使用此:

$("input[name='service[]']").each(function(){            
    favorite.push( this.checked ? this.value : 0 );
});

Demo

答案 3 :(得分:0)

使用i s()检查并有条件地添加0

,而不是仅添加选中复选框的值。

$(document).ready(function() {
  $("input[name='mali_servis[]']").click(function() {
    var favorite = new Array();
    $.each($("input[name='servis[]']"), function() {
      if ($(this).is(':checked')) {
        favorite.push($(this).val());
      } else {
        favorite.push(0);
      }
    });
    console.log("My favourite sports are: " + favorite.join(", "));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="checkbox" name="servis[]" rel='1' value="1">servis 1
<br>
<input type="checkbox" name="servis[]" rel='2' value="2">servis 2
<br>
<input type="checkbox" name="servis[]" rel='3' value="3">servis 3
<br>
<input type="checkbox" name="servis[]" rel='4' value="4">servis 4
<br>
<input type="checkbox" name="servis[]" rel='5' value="5">servis 5
<br>
<input type="button" name="mali_servis[]" value="Submit">

答案 4 :(得分:0)

<强> HTML

<fieldset id="checkboxes">
    <input type="checkbox" name="servis[]" rel='1' value="1">servis 1<br>
    <input type="checkbox" name="servis[]" rel='2' value="2">servis 2<br>
    <input type="checkbox" name="servis[]" rel='3' value="3">servis 3<br>
    <input type="checkbox" name="servis[]" rel='4' value="4">servis 4<br>
    <input type="checkbox" name="servis[]" rel='5' value="5">servis 5<br>
</fieldset>

<强>的jQuery

$(document).ready(function() {
   var checkboxes = $("#checkboxes input");
   checkboxes.on("click", function() {
        var favorite = new Array();
        checkboxes.each(function() { 
            if ($(this).is(":checked")) {      
                favorite.push($(this).val());
            } else {
                favorite.push(0);
            }
        });
        alert("My favourite sports are: " + favorite.join(", "));
    });
});