2014-12-03 1 views
2

Я использую массив для значения флажка, , если я нажму на флажок, он получит значения, и если я сниму этот флажок, вы удалите его значение и не сохраните в массиве, вот мой код. .Как получить значения CheckCheck и удалить unchecked в массиве

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; 
       } 
      } 
     } 
    } 

Теперь мой вопрос, если проверяется он сохраняет значение, и если я снимите его не удалить значение из массива, помощь

+1

Просьбу предоставить соответствующий HTML или создать jsfiddle, чтобы продемонстрировать, что не работает. – PeterKA

+0

Почему бы просто не использовать '.push()' и '.pop()' для добавления и удаления значений из массива. –

ответ

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)); 
 
});
<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>

1

почему бы не очистить массив и хранить его с новыми значениями

var values=[]; 

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

demo

или

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); 
});