2017-02-12 2 views
0

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

Все работает хорошо, за исключением случаев, когда я нажимаю первый в наборе, он не нажимает противоположный.

Я установил код в JSFiddle, был бы признателен за любую помощь.

https://jsfiddle.net/mikeu/yx89h5nn/

<table> 
    <tr> 
    <td class="cb"> 
     <div class="btn-group" data-toggle="buttons" data-opposite-name="_S1"> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_L1" value="a"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_L1" value="b"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_L1" value="c"> 
     </label> 
     </div> 
    </td> 
    <td class="cb"> 
     <div class="btn-group" data-toggle="buttons" data-opposite-name="_L1"> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_S1" value="a"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_S1" value="b"> 
     </label> 
     <label class="btn btn-xs"> 
      <input type="radio" name="_S1" value="c"> 
     </label> 
     </div> 
    </td> 
    </tr> 
</table> 


$('input:radio').change(function() { 
    var opposite = $(this).parent().closest('div').data("opposite-name"); 

    if ($('*[name="' + opposite + '"]').val() != $(this).val()) { 
    $('*[name="' + opposite + '"][value="' + $(this).val() + '"]').click(); 
    } 
}); 

ответ

1

Вам необходимо проверить значение переключателя :checked. Таким образом, условие должно быть

if($('*[name="' + opposite + '"]:checked').val() != $(this).val()) 

Кроме того, вместо выполнения click(), вы должны установить checked свойство.

полный код

$('input:radio').change(function() { 
    var opposite = $(this).closest('div').data("opposite-name"); 
    if ($('*[name="' + opposite + '"]:checked').val() != $(this).val()) { 
     $('*[name="' + opposite + '"][value="' + $(this).val() + '"]').prop('checked', true); 
    } 
}); 

Updated Fiddle

0

Что эта часть должна делать?

if ($('*[name="' + opposite + '"]').val() != $(this).val())

Удалить этот код работает правильно.