Как установить 2 флажка с одинаковыми именами

#javascript #jquery #ajax #checkbox #forms

#javascript #jquery #ajax #флажок #формы

Вопрос:

Итак, у меня есть форма поиска ajax, которая выдает результаты с флажком: вот часть кода PHP для каждого результата поиска:

 <input type="checkbox" class="lovkrav_checkbox checkbox_search" name="lovkrav['.$lovkrav_id.']" value="'.$lovkrav_id.'" orig-id="lovkrav'.$lovkrav_id.'" id="lovkravs'.$lovkrav_id.'" '.$checked.'/>
  

и на веб-сайте уже есть двойной флажок с тем же именем, но с другим идентификатором.
Используя свойство «orig-id«, я получаю идентификатор двойного флажка. Оба флажка имеют одинаковый класс lovkrav_checkbox.

Я дошел до того, что событие щелчка определяется двойным флажком, как и должно быть, но не флажком, на который вы нажали! Вот код:

  $(document).on("click",".lovkrav_checkbox",function(e){
    toggle_id = document.getElementById($(this).attr("orig-id"));        
    $(toggle_id).trigger("click");
});
  

Чего я хочу добиться, так это когда пользователь нажимает на один флажок — двойной флажок (тот, у которого одинаковое свойство name) также будет установлен / снят.

Что я делаю не так?

Комментарии:

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

2. Чего я хочу добиться, так это когда пользователь нажимает на один флажок — двойной флажок (тот, у которого одинаковое свойство name) также будет установлен / снят.

3. @trojan Подводный камень здесь заключается в том, что если ваша страница загружается с одним из установленных флажков .. возможна ли такая ситуация? в этом случае вы бы хотели, чтобы каждый щелчок проверял непроверенный и непроверенный флажок?

Ответ №1:

Было бы проще переключить проверенное состояние с помощью ванильного javascript.

HTML

 <input type="checkbox" name="test">
<input type="checkbox" name="test">
  

JS

 //All of the checkboxes
var $checkboxes = $("input[type=checkbox][name=test]");

//The event handler
$checkboxes.on("click", function() {
    //Get the state of the check box you clicked
    var checkedState = this.checked

    //Make it the state of all the checkboxes
    $checkboxes.each(function() {
        this.checked = checkedState;
    });
});
  

Вот скрипка

Комментарии:

1. Я получаю эту ошибку: Ошибка: синтаксическая ошибка, нераспознанное выражение: ввод [тип = флажок] [имя = lovkrav [621]]

2. Я понял!, пришлось экранировать имя в квотах: var $checkboxes = $(«input[type= checkbox][name='» $(this).attr(‘name’) «‘]»);

3. Возможно, вы захотите изменить селектор $checkboxes на что-то более конкретное в производстве. Может быть, попробовать .lovkrav_checkbox[name='" $(this).attr('name') "']

Ответ №2:

Вы можете попробовать это:

ДЕМОНСТРАЦИЯ

  $(document).on("click",".check",function(e){
    $("." this.className).prop("checked", this.checked);
 });
  

Комментарии:

1. это не сработает, поскольку он переключает все флажки с одним и тем же классом

Ответ №3:

Попробуйте и это:

js:

  $(document).on("click",".lovkrav_checkbox",function(e){
    toggle_id = $(this).attr("name");
     isChecked = $(this).prop("checked");
     $("input:checkbox").each(
         function(){

             if($(this).attr("name") == toggle_id amp;amp; isChecked){
                 $(this).prop("checked",true);
             }
             else{
                 $(this).prop("checked",false);
             }
         });
});
  

скрипка

Ответ №4:

Попробуйте это

 $("input[type=checkbox][name=test]").prop("checked",true);