2016-02-16 3 views
0

У меня есть группа радиостанций с одинаковым именем, потому что они динамически генерируются. Я хочу, чтобы они были необходимы, но я ничего не делаю, это происходит (включая попытку подсчета отмеченных элементов с помощью jquery).Радиокабели не подтверждают

Я предполагаю, что это связано с каким-то конфликтом с идентификатором?

У меня есть радио, помеченные как «обязательные» в HTML.

Или это может быть связано с тем, как я обрабатываю jquery?

<div class="benchmark-question-title"><?php echo $atts['content']; ?></div> 
        <div class="row"> 
         <div class="col-sm-6 col-xs-12"> 
          <form class="benchmark-question-binary"> 
           <label class="benchmark-yes-no"><input type="radio" name="yesno" value="yes" required>Yes</label> 
           <label class="benchmark-yes-no"><input type="radio" name="yesno" value="no" checked required>No</label> 
          </form> 
         </div> 
         <div class="col-sm-6 col-xs-12"> 
          <span class="benchmark-move-forward italic">If yes, move on to the next movement</span> 
         </div> 
        </div> 

При попытке увидеть, если какая-либо радио группы с названием «YesNo» НЕ проверяются с JQuery, она не кажется, распознавать группы и рассчитывает каждый вариант по отдельности.

$('input:radio[name=yesno]').each(function(){ 
    if ($(this).is(":checked")){ 
     console.log('checked') 
    } 
    else{ 
     console.log('not checked'); 
    } 
}); 
+0

Это не вопрос идентификаторов, поскольку вы не используете атрибут id в коде, который вы предоставили. Дело в том, что ваш js-код находится в функции document.ready, но вы говорите, что добавляете эти элементы динамически. Таким образом, вы должны использовать отложенные объекты для обработки элементов, которые добавляются в dom после того, как страница отобразила –

+0

- это весь ваш html-код? –

+0

Получил! ' $ ('. Тест-вопрос '). Каждая (функция() { \t \t, если ($ (это) .find (' ввода [тип = "Радио"]:. Проверено ') длина> 0) \t \t { \t \t console.log ("проверено"); \t \t} \t \t еще \t \t { \t \t console.log ("не проверено"); \t \t неудачу = истина; \t \t} ' –

ответ

0

Не нужно повторять, просто проверьте состояние группы.

$("input:radio[name='yesno']").is(":checked") 

или

$("input:radio[name='yesno']:checked").val() 

Using JQuery to check if no radio button in a group has been checked

+0

Блестящий! Я думал, потому что было несколько групп, даже с тем же именем, мне нужно было перебирать. Спасибо, босс. –

+0

Мой первоначальный тест обманул меня. Если ANY радиогруппа с тем же именем была отключена, вышеуказанный оператор возвращает true. Даже если некоторые из них не отмечены. Вот почему я итерировал изначально, если они ВСЕ вернулись, тогда я был бы в хорошей форме. –

+0

не забудьте принять, если этот ответ решает вашу проблему. –

0

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

<input type="radio" name="yesno[]" value="yes" /> 
<input type="radio" name="yesno[]" value="no" checked /> 
Смежные вопросы