Получение всех выбранных флажков в массиве - PullRequest
144 голосов
/ 26 февраля 2009

Итак, у меня есть эти флажки:

<input type="checkbox" name="type" value="4" />
<input type="checkbox" name="type" value="3" />
<input type="checkbox" name="type" value="1" />
<input type="checkbox" name="type" value="5" />

И так далее. Их около 6, и они закодированы вручную (т.е. не получены из БД), поэтому они, вероятно, останутся неизменными некоторое время.

У меня вопрос, как я могу получить их все в массиве (в javascript), чтобы я мог использовать их при выполнении запроса AJAX $.post с использованием Jquery.

Есть мысли?

Редактировать: я бы хотел, чтобы только выбранные флажки были добавлены в массив

Ответы [ 17 ]

3 голосов
/ 16 ноября 2017

При проверке добавьте значение для флажка и при проверке вычтите значение

$('#myDiv').change(function() {
  var values = 0.00;
  {
    $('#myDiv :checked').each(function() {
      //if(values.indexOf($(this).val()) === -1){
      values=values+parseFloat(($(this).val()));
      // }
    });
    console.log( parseFloat(values));
  }
});
<div id="myDiv">
  <input type="checkbox" name="type" value="4.00" />
  <input type="checkbox" name="type" value="3.75" />
  <input type="checkbox" name="type" value="1.25" />
  <input type="checkbox" name="type" value="5.50" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
1 голос
/ 16 марта 2016

Использование Jquery

Вам нужно только добавить класс к каждому входу, у меня есть добавить класс «источник», вы можете изменить его, конечно,

<input class="source" type="checkbox" name="type" value="4" />
<input class="source" type="checkbox" name="type" value="3" />
<input class="source" type="checkbox" name="type" value="1" />
<input class="source" type="checkbox" name="type" value="5" />

<script type="text/javascript">
$(document).ready(function() {
    var selected_value = []; // initialize empty array 
    $(".source:checked").each(function(){
        selected_value.push($(this).val());
    });
    console.log(selected_value); //Press F12 to see all selected values
});
</script>
1 голос
/ 11 мая 2017

Используйте это:

var arr = $('input:checkbox:checked').map(function () {
  return this.value;
}).get();
0 голосов
/ 07 апреля 2019

function selectedValues(ele){
  var arr = [];
  for(var i = 0; i < ele.length; i++){
    if(ele[i].type == 'checkbox' && ele[i].checked){
      arr.push(ele[i].value);
    }
  }
  return arr;
}
0 голосов
/ 04 мая 2018

вот мой код для той же проблемы, кто-то может попробовать это. JQuery

<script>
$(document).ready(function(){`
$(".check11").change(function(){
var favorite1 = [];        
$.each($("input[name='check1']:checked"), function(){                    
favorite1.push($(this).val());
document.getElementById("countch1").innerHTML=favorite1;
});
});
});
</script>
0 голосов
/ 13 апреля 2018

Вы можете попробовать что-то вроде этого:

$('input[type="checkbox"]').change(function(){
       var checkedValue = $('input:checkbox:checked').map(function(){
                return this.value;
            }).get();         
            alert(checkedValue);   //display selected checkbox value     
 })

Здесь

$('input[type="checkbox"]').change(function() call when any checkbox checked or unchecked, after this
$('input:checkbox:checked').map(function()  looping on all checkbox,
0 голосов
/ 18 октября 2017

Используйте комментарий, если блок запрещает добавлять значения, которые уже есть в массиве, если вы используете нажатие кнопки или что-то еще для запуска вставки

$('#myDiv').change(function() {
  var values = [];
  {
    $('#myDiv :checked').each(function() {
      //if(values.indexOf($(this).val()) === -1){
      values.push($(this).val());
      // }
    });
    console.log(values);
  }
});
<div id="myDiv">
  <input type="checkbox" name="type" value="4" />
  <input type="checkbox" name="type" value="3" />
  <input type="checkbox" name="type" value="1" />
  <input type="checkbox" name="type" value="5" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
...