Проверьте радио кнопку при нажатии DIV

Я пишу приложение для викторины, используя php/jquery. Выбор ответа содержится следующим образом:

<ul id="answers"> 
    <li> 
        <div> 
        <input type='radio' name='answer_id' value='313'> True
        </div> 
    </li> 
    <li> 
        <div> 
        <input type='radio' name='answer_id' value='314'> False
        </div> 
    </li> 
</ul> 

После создания w/css эти ответы появляются в контейнере с одним ответом на строку. Каждый ответ имеет свою собственную коробку внутри контейнера. Я хочу, чтобы пользователь мог щелкнуть в любом месте отдельного ответного div и установить флажок выбора радио.

Как активировать проверку переключателя, когда пользователь щелкает в контейнере div с помощью jquery?

Ответ 1

Вместо использования jQuery это можно сделать в собственном HTML, используя элемент <label>. Вот пример в действии.

<ul id="answers"> 
        <li> 
                <label> 
                    <input type='radio' name='answer_id' value='313'> True
                </label> 
        </li> 
        <li> 
                <label> 
                    <input type='radio' name='answer_id' value='314'> False
                </label> 
        </li> 
</ul>

Ответ 2

Правильное использование тега метки:

<input type="checkbox" id="checkme" name="checkme" /> <label for="checkme">Toggle this checkbox on/off</label>

for = "..." всегда ссылается на входной идентификатор.

Ответ 3

Я согласен с tj111, но если это не всегда соответствует:

  • Более сложный стиль.
  • метки работают только в том случае, если в них есть текст (спасибо Майкл)

Вот альтернативный код, использующий div и jQuery:

$('input:radio').click(ev){
    ev.stopPropagation();
}).parent().click(function(ev){
    ev.preventDefault();
    $(this).children('input').click();
    $(this).addClass('active').siblings().removeClass('active');
});

С "активным" классом теперь вы можете даже скрыть радиоприемники и использовать таблицу стилей для выделения.

Ответ 4

может быть что-то вроде:

$('#answers li div').click(function(){

  var r = $(this).find('input[type=radio]');
  if($(r).is(":checked"))
  {
    $(r).attr("checked", "");
  }
  else
  {
    $(r).attr("checked", "checked");
  }

});