Получить значения CheckBoxes в массив или список с Javascripts или Jquery - PullRequest
0 голосов
/ 05 июля 2019

Я хочу получить значения в массив (контрольный список) из отмеченных флажков.Я пробовал этот код, но, похоже, он не работает.В for я могу получить элементы «контрольного списка», которые являются push, но после for не могут.Как я могу получить все проверенные значения CheckBoxes в массив или список?

$(function() {
  $("#btnEkle").click(
    function() {
      var checkbox, checkslist, menuId, text, vModel;
      checkslist = [];
      checkbox = document.getElementsByClassName("checks");

      for (var i = 0; checkbox.length; ++i) {
        if (checkbox[i].checked) {
          menuId = checkbox[i].value;
          checkslist.push(menuId);
        }
      }      
      alert(checkslist[0].value)
    })    
})

Ответы [ 3 ]

1 голос
/ 05 июля 2019

Проблема с вашим циклом for,

for (var i = 0; checkbox.length; ++i) {

Вы должны повторить цикл таким образом,

for (var i = 0; i<checkbox.length-1; i++) {
    if (checkbox[i].checked) {
         menuId = checkbox[i].value;
         checkslist.push(menuId);
    }
}

И ваше предупреждение должно быть,

alert(checkslist[0] )

Демо

0 голосов
/ 05 июля 2019

Если вы хотите, чтобы все отмеченные значения появлялись в вашем предупреждении, вы должны объединить их в строку. Эта функция получает все чекбоксы с классом «флажки», как в вашем примере функции, добавляет те значения, которые проверяются, в массив и создает строку для предупреждения, которая содержит все проверенные значения. Массив значений возвращается, если вы хотите использовать это где-то еще.

function getChecked(){
    let checks = document.getElementsByClassName("checks");
    let checked_values = [];
    let checked_values_string = "";
    for(let i=0; i<checks.length; i++){
        if(checks[i].checked){
            checked_values.push(checks[i].value);
            checked_values_string = checked_values_string + checks[i].value + " ";
        }
    }
    alert(checked_values_string);
    return checked_values;
}
0 голосов
/ 05 июля 2019

Вы можете зациклить все флажки и добавить их в массив следующим образом: list.push(($(this).prop("checked"))); флажок возвращает либо true, либо false, если флажок установлен

function getList() {
  var list = []
  $.each($("input:checkbox"), function() {
    list.push(($(this).prop("checked")));    
  });
  console.log(list)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">

<button onClick="getList()">Get list</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...