如何获取GetChecked值并删除未选中的数组

Moh*_*han 3 javascript checkbox jquery partial-views asp.net-mvc-4

我使用数组作为复选框值,如果我点击复选框它获取值,如果我取消选中此复选框它删除它的值而不保存在数组中,这是我的代码..

function selectUser(sender) {
        if (sender.prop('checked'),true)
            assignedTo[assignedTo.length] = sender.id;   
        else {
            for (var i = 0; i < assignedTo.length; i++) {
                if (sender.id == assignedTo[i]) {
                    assignedTo.splice(i, 1);
                    break;
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我的问题是如果选中它会保存值,如果我取消选中它没有从数组中删除值,任何帮助

sha*_*haN 6

为什么不清除数组并用新值存储它

var values=[];

$(".cbx").click(function(){
    values=[];
    $(".cbx").each(function(){
        if($(this).is(":checked"))
            values.push($(this).val());
    });
    alert(values);
});
Run Code Online (Sandbox Code Playgroud)

演示

或者

var values=[];

$(".cbx").change(function(){
    if($(this).is(":checked"))
       values.push($(this).val());
    else{
       var x = values.indexOf($(this).val());
       values.splice(x,1);
    }
    alert(values);
});
Run Code Online (Sandbox Code Playgroud)


Pet*_*rKA 5

你采取的方法可能非常繁琐.您可以使用.map()每次选中或取消选中复选框时重新评估数组,如下所示:

$(':checkbox[name=test]').on('change', function() {
    var assignedTo = $(':checkbox[name=test]:checked').map(function() {
        return this.id;
    })
    .get();

    //Out for DEMO purposes only 
    $('pre.out').text( JSON.stringify( assignedTo ) );
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="test" value="1" id="c1"/> 1 <br/>
<input type="checkbox" name="test" value="2" id="c2"/> 2 <br/>
<input type="checkbox" name="test" value="3" id="c3"/> 3 <br/>
<input type="checkbox" name="test" value="4" id="c4"/> 4 <br/>
<input type="checkbox" name="test" value="5" id="c5"/> 5 <br/>
<input type="checkbox" name="test" value="6" id="c6"/> 6 <br/>
<input type="checkbox" name="test" value="7" id="c7"/> 7 <br/>

<!--output area for DEMO purposes only -->
<pre class="out"></pre>
Run Code Online (Sandbox Code Playgroud)