Заполните список флажков с помощью переключателя

Я пытаюсь заполнить группу report_id в следующих флажках, созданных следующим циклом for, щелкнув переключатель.

<div class = "col"><h4 style = "margin-top: 0"><strong>Application Suite</strong></h4><input type = "radio" id = "radio1" name = "suite" value = "1" onclick = "CheckBoxes">>Executive CFO Suite</div>
<div class = "container">

        <div class = "col-md-4">
          {% if fingrouplist is not None %}
                      <h4><strong>Financial</strong/></br></br><input type = "checkbox" onClick = "togglerep(this)" /> Select All</h4>

                              <ul>
                              {% for app in fingrouplist %}
                              <li><input type = "checkbox" name = "report_id" value  = "{{app.report_id}}" >  {{ app.report_name_sc }}</li>
                              {% endfor %}
                              </ul>
          {% endif %}
        </div>

Для этого я использую следующую javascript-функцию OnClick, я полный новичок. Я безуспешно пробовал следующее:

function CheckBoxes(selection) {
  if (selection == 1) {
    $('#Report_Id').prop('checked', true) == '15', '16', '17', '18', '19', '22', '23', '26', '28', '29', '30', '31', '33','34', '35', '36', '39', '40', '47', '48', '50', '52', '59', '60';
  }
}

Иногда список report_id не всегда включает все параметры, но я хочу включить только те параметры, которые существуют с пользовательскими настройками в их report_id, полученном из цикла for.

У меня также есть созданный объект python, который определяет список отчетов, поэтому, если я могу получить его с помощью этой опции, вместо того, чтобы вводить список чисел, это может быть лучшим маршрутом.

rolebased = QvReportList.objects.filter(role_based_id__exact = '1').values('report_id', 'report_name_sc').distinct()

Приветствуется любая помощь, которая поможет мне двигаться в правильном направлении.

Чего вы пытаетесь достичь? Получить все значения отмеченных флажков?

muecas 20.06.2018 02:50

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

user1470034 20.06.2018 14:26

Дайте мне посмотреть, понял ли я, когда вы нажимаете радиокнопку, вам нужно установить некоторые флажки, я прав?

muecas 20.06.2018 14:30

Вы пробовали добавить все идентификаторы флажков? $('#checkbox_id_1, #checkbox_id_2, #checkbox_id_3, ...., #checkbox_id_60').prop('checked', true)

Boky 20.06.2018 14:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем коде куча ошибок. Во-первых, вы должны использовать () для вызова функции, а не только ее имени, поэтому вам нужно будет изменить переключатель следующим образом:

<input type = "radio" id = "radio1" name = "suite" value = "1" onclick = "CheckBoxes(this)">

Затем вам нужно будет изменить код функции, чтобы получить все значения отмеченных ckeckboxes;

function CheckBoxes(clicked) {

    // array of checkboxes to check
    var checked = [15, 16, 17, 18, 19, 22, 23, 26, 28, 29, 30, 31, 33, 34, 35, 36, 39, 40, 47, 48, 50, 52, 59, 60];

    // if the radio button is checked
    if ($(clicked).is(':checked')) {

        // for each checked checkbox
        $('input[name* = "report_id"]').each(function() {

            // set as checked if the value is defined in the array
            // Convert $(this).val() to Numnber() to compare against a number
            $(this).prop('checked', checked.indexOf(Number($(this).val())) >= 0);

        });

    }

}

В качестве примечания, если вы собираетесь отправить форму с несколькими флажками с одним и тем же именем, вам следует использовать определение имени массива []. В вашем случае это будет (обратите внимание на использование квадратных скобок в определении имени):

<input type = "checkbox" name = "report_id[]" value  = "{{app.report_id}}" >

Проверьте мой рабочий фрагмент:

function CheckBoxes(clicked) {
  
  // Array of checked values
  var checked = [1, 2, 5];
  
  // if the radio button is checked
  if ($(clicked).is(':checked')) {
  
    // for each checked checkbox
    $('input[name* = "report_id"]').each(function() {
    
      // set as checked if the value is defined in the array
      // Convert $(this).val() to Numnber() to compare against a number
      $(this).prop('checked', checked.indexOf(Number($(this).val())) >= 0);
    
    });
    
  }
  
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type = "radio" onclick = "CheckBoxes(this)">
<ul>
  <li><input type = "checkbox" value = "1" name = "report_id[]"> Value 1</li>
  <li><input type = "checkbox" value = "2" name = "report_id[]"> Value 2</li>
  <li><input type = "checkbox" value = "3" name = "report_id[]"> Value 3</li>
  <li><input type = "checkbox" value = "4" name = "report_id[]"> Value 4</li>
  <li><input type = "checkbox" value = "5" name = "report_id[]"> Value 5</li>
</ul>

Надеюсь, поможет.

Спасибо за руководство, muecas.

user1470034 20.06.2018 16:01

Другие вопросы по теме