Как reset радиообъекты в jQuery, чтобы ни один не был проверен
У меня есть радиокнопки в формате HTML:
<td>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>
Это в теге формы, и когда пользователь отправляет форму, я хочу вернуть все переключатели по умолчанию. Значение ни один из них не проверен.
У меня есть этот код, но он дает ошибку, говоря [0] is null or not an object
$('input[@name="correctAnswer"]')[0].checked = false;
$('input[@name="correctAnswer"]')[1].checked = false;
$('input[@name="correctAnswer"]')[2].checked = false;
$('input[@name="correctAnswer"]')[3].checked = false;
Я делаю это в IE 6.
Ответы
Ответ 1
В версиях jQuery до версии 1.6 используйте:
$('input[name="correctAnswer"]').attr('checked', false);
В версиях jQuery после 1.6 вы должны использовать:
$('input[name="correctAnswer"]').prop('checked', false);
но если вы используете 1.6.1+, вы можете использовать первую форму (см. примечание 2 ниже).
Примечание 1: важно, чтобы второй аргумент был false, а не "false" , поскольку "false" не является ложным значением. т.е.
if ("false") {
alert("Truthy value. You will see an alert");
}
Примечание 2: Как и в jQuery 1.6.0, теперь есть два похожих метода: .attr
и .prop
, которые выполняют две связанные, но немного разные вещи. Если в этом конкретном случае советы, приведенные выше, работают, если вы используете 1.6.1+. Вышеуказанное не будет работать с 1.6.0, если вы используете 1.6.0, вам следует обновить его. Если вы хотите получить подробную информацию, продолжайте читать.
Детали: При работе с прямыми HTML-элементами DOM существуют свойства, прикрепленные к элементу DOM (checked
, type
, value
и т.д.), которые обеспечивают интерфейс для работы состояние страницы HTML. Существует также интерфейс .getAttribute
/.setAttribute
, который обеспечивает доступ к значениям атрибута HTML, как указано в HTML. До 1.6 jQuery размыл различие, предоставив один метод .attr
для доступа к обоим типам значений. jQuery 1.6+ предоставляет два метода: .attr
и .prop
, чтобы различать эти ситуации.
.prop
позволяет установить свойство в элементе DOM, а .attr
позволяет установить значение атрибута HTML. Если вы работаете с обычным DOM и устанавливаете свойство checked, elem.checked
, на true
или false
, вы изменяете текущее значение (то, что видит пользователь), и возвращаемое значение отслеживает состояние на странице. elem.getAttribute('checked')
однако возвращает только исходное состояние (и возвращает 'checked'
или undefined
в зависимости от исходного состояния из HTML). В версии 1.6.1+ с помощью .attr('checked', false)
выполняются как elem.removeAttribute('checked')
, так и elem.checked = false
, поскольку это изменение вызвало много проблем с обратной совместимостью и не может действительно сказать, хотите ли вы установить атрибут HTML или свойство DOM. Подробнее см. В документации для .prop.
Ответ 2
Лучший способ установить состояние радиообъектов в jquery:
HTML:
<input type="radio" name="color" value="orange" /> Orange
<input type="radio" name="color" value="pink" /> Pink
<input type="radio" name="color" value="black" /> Black
<input type="radio" name="color" value="pinkish purple" /> Pinkish Purple
Код JQuery (1.4+) для предварительной выбор одной кнопки:
var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").attr("checked","checked");
В коде Jquery 1.6+ предпочтительнее использовать метод .prop():
var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true);
Чтобы отменить выбор кнопок:
$("[name=color]").removeAttr("checked");
Ответ 3
Ваша проблема в том, что селектор атрибутов не начинается с @
.
Попробуйте следующее:
$('input[name="correctAnswer"]').attr('checked', false);
Ответ 4
$('#radio1').removeAttr('checked');
$('#radio2').removeAttr('checked');
$('#radio3').removeAttr('checked');
$('#radio4').removeAttr('checked');
Or
$('input[name="correctAnswer"]').removeAttr('checked');
Ответ 5
Наконец, после множества тестов, я считаю, что наиболее удобный и эффективный способ настройки:
var presetValue = "black";
$("input[name=correctAnswer]").filter("[value=" + presetValue + "]").prop("checked",true);
$("input[name=correctAnswer]").button( "refresh" );//JQuery UI only
Обновление требуется с помощью объекта JQueryUI.
Получить значение легко:
alert($('input[name=correctAnswer]:checked').val())
Протестировано с помощью JQuery 1.6.1, JQuery UI 1.8.
Ответ 6
Я знаю, что это старое и что это немного не по теме, но предположим, что вы хотите снять флажки только с определенными переключателями в коллекции:
$("#go").click(function(){
$("input[name='correctAnswer']").each(function(){
if($(this).val() !== "1"){
$(this).prop("checked",false);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
<input type="button" id="go" value="go">
Ответ 7
Установлен переключатель радиостанций через jquery:
<div id="somediv" >
<input type="radio" name="enddate" value="1" />
<input type="radio" name="enddate" value="2" />
<input type="radio" name="enddate" value="3" />
</div>
Код jquery:
$('div#somediv input:radio:nth(0)').attr("checked","checked");
Ответ 8
Если вы хотите очистить все радиокнопки в DOM:
$('input[type=radio]').prop('checked',false);
Ответ 9
<div id="radio">
<input type="radio" id="radio1" name="radio"/><label for="radio1">Bar Chart</label>
<input type="radio" id="radio2" name="radio"/><label for="radio2">Pie Chart</label>
<input type="radio" id="radio3" name="radio"/><label for="radio3">Datapoint Chart</label>
</div>
$('#radio input').removeAttr('checked');
// Refresh the jQuery UI buttonset.
$( "#radio" ).buttonset('refresh');
Ответ 10
Хотя prop изменил проверенный статус, но изменения также показывают, что в форме.
$('input[name="correctAnswer"]').prop('checked', false).change();
Ответ 11
Где у вас есть: <input type="radio" name="enddate" value="1" />
После значения = "1" вы также можете просто добавить unchecked =" false" />
Тогда строка будет следующей:
<input type="radio" name="enddate" value="1" unchecked =" false" />
Ответ 12
Установите все переключатели по умолчанию:
$("input[name='correctAnswer']").checkboxradio( "refresh" );
Ответ 13
Почему бы вам не сделать:
$("#radio1, #radio2, #radio3, #radio4").checked = false;