Как установить опцию радио проверяется на загрузку с помощью jQuery?
Необходимо проверить, не установлено ли значение по умолчанию, а затем установить значение по умолчанию
Как установить опцию радио проверяется на загрузку с помощью jQuery?
Необходимо проверить, не установлено ли значение по умолчанию, а затем установить значение по умолчанию
Ответы:
Скажем, у вас были такие радио-кнопки, например:
<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>
И вы хотели проверить значение со значением «Мужской» onload, если радио не проверено:
$(function() {
var $radios = $('input:radio[name=gender]');
if($radios.is(':checked') === false) {
$radios.filter('[value=Male]').prop('checked', true);
}
});
$radios.removeAttr('checked')
перед опорой. Это спутает браузер и опубликованные значения.
Как насчет одного лайнера?
$('input:radio[name="gender"]').filter('[value="Male"]').attr('checked', true);
Это приведет к ошибке form.reset ():
$('input:radio[name=gender][value=Male]').attr('checked', true);
Но этот работает:
$('input:radio[name=gender][value=Male]').click();
На самом деле JQuery имеет два способа установить проверенный статус для радио и флажков, и это зависит от того, используете ли вы значение атрибута в разметке HTML или нет:
$("[name=myRadio]").val(["myValue"]);
$("#myRadio1").prop("checked", true);
В первом случае мы указываем всю группу радио, используя имя, и сообщаем JQuery, чтобы найти радио для выбора, используя функцию val. Функция val принимает массив из 1 элемента и находит радио с соответствующим значением, устанавливает его флажок = истина. Другие с таким же именем будут отменены. Если радиопередача с соответствующим значением не найдена, все будут отменены. Если имеется несколько радиостанций с одинаковым именем и значением, то будет выбрана последняя, а другие будут отменены.
Если вы не используете атрибут значения для радио, вам нужно использовать уникальный идентификатор для выбора определенного радио в группе. В этом случае вам нужно использовать функцию prop, чтобы установить свойство «checked». Многие люди не используют атрибут value с флажками, поэтому # 2 больше подходит для флажков, чем для радио. Также обратите внимание, что, поскольку флажки не образуют группу, когда они имеют одинаковые имена, вы можете сделать $("[name=myCheckBox").prop("checked", true);
для флажков.
Вы можете поиграть с этим кодом здесь: http://jsbin.com/OSULAtu/1/edit?html,output
Мне понравился ответ @Amc. Я обнаружил, что выражение можно сжать дальше, чтобы не использовать вызов filter () (@chaiko, по-видимому, тоже это заметил). Кроме того, prop () - это путь против attr () для jQuery v1.6 +, см. Документацию jQuery для prop () для ознакомления с официальными рекомендациями по этому вопросу.
Рассмотрим те же теги ввода из ответа @Paolo Bergantino.
<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>
Обновленная строка может читать что-то вроде:
$('input:radio[name="gender"][value="Male"]').prop('checked', true);
Я думаю, вы можете предположить, что это имя уникально, и все радио в группе имеют одно и то же имя. Тогда вы можете использовать поддержку jQuery следующим образом:
$("[name=gender]").val(["Male"]);
Примечание: передача массива важна.
Условная версия:
if (!$("[name=gender]:checked").length) {
$("[name=gender]").val(["Male"]);
}
$("*")
он совпадал бы со всем, поэтому вы должны использовать тип в аренду $("input")
или ID будет быть идеальным, так как DOM имеет собственные вызовы для получения элемента по id
document.querySelectorAll
выполняющий всю работу.
$("input[name=gender]")
или $("input[name=gender]:radio")
или (для современных браузеров)$("input[name=gender][type=radio]")
Если вы хотите, чтобы оно было действительно динамичным, и выберите радио, которое соответствует входящим данным, это работает. Он использует значение пола переданных данных или использует значение по умолчанию.
if(data['gender'] == ''){
$('input:radio[name="gender"][value="Male"]').prop('checked', true);
}else{
$('input:radio[name="gender"][value="' + data['gender'] +'"]').prop('checked', true);
};
Собственное решение JS:
document.querySelector('input[name=gender][value=Female]').checked = true;
HTML:
<input type='radio' name='gender' value='Male'> Male
<input type='radio' name='gender' value='Female'>Female
И если вы хотите передать значение из вашей модели и выбрать радиокнопку из группы по нагрузке в зависимости от значения, используйте:
Jquery:
var priority = Model.Priority; //coming for razor model in this case
var allInputIds = "#slider-vertical-" + itemIndex + " fieldset input";
$(allInputIds).val([priority]); //Select at start up
И HTML:
<div id="@("slider-vertical-"+Model.Id)">
<fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
<input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("high-"+Model.Id)" value="1" checked="checked">
<label for="@("high-"+Model.Id)" style="width:100px">@UIStrings.PriorityHighText</label>
<input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("medium-"+Model.Id)" value="2">
<label for="@("medium-"+Model.Id)" style="width:100px">@UIStrings.PriorityMediumText</label>
<input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("low-"+Model.Id)" value="3">
<label for="@("low-"+Model.Id)" style="width:100px">@UIStrings.PriorityLowText</label>
</fieldset>
</div>
Мне не нужно все это. С простым и старым HTML вы можете достичь того, что вы хотите. Если вы разрешите радио, которое вы хотите, проверено по умолчанию следующим образом:
<input type='radio' name='gender' checked='true' value='Male'>
Когда страница загрузится, она будет проверена.
$("form input:[name=gender]").filter('[value=Male]').attr('checked', true);
Вот пример с вышеуказанными методами:
<div class="ui-field-contain">
<fieldset data-role="controlgroup" data-type="horizontal"> <legend>Choose a pet:</legend>
<input type="radio" name="radio-choice-2" id="radio-choice-1" value="choice1">
<label for="radio-choice-1">Cat</label>
<input type="radio" name="radio-choice-2" id="radio-choice-2" value="choice2">
<label for="radio-choice-2">Dog</label>
<input type="radio" name="radio-choice-2" id="radio-choice-3" value="choice3">
<label for="radio-choice-3">Hamster</label>
<input type="radio" name="radio-choice-2" id="radio-choice-4" value="choice4">
<label for="radio-choice-4">Lizard</label>
</fieldset>
</div>
В JavaScript:
$("[name = 'radio-choice-2'][value='choice3']").prop('checked', true).checkboxradio('refresh');
Обратите внимание на это поведение при получении значений радиовхода:
$('input[name="myRadio"]').change(function(e) { // Select the radio input group
// This returns the value of the checked radio button
// which triggered the event.
console.log( $(this).val() );
// but this will return the first radio button's value,
// regardless of checked state of the radio group.
console.log( $('input[name="myRadio"]').val() );
});
Поэтому $('input[name="myRadio"]').val()
не возвращает проверенное значение радиовхода, как вы могли бы ожидать - оно возвращает значение первой радиокнопки.
// Если вы делаете это на javascript или в фреймворке, таком как магистраль, вы часто сталкиваетесь с этим, у вас может быть что-то подобное
$MobileRadio = $( '#mobileUrlRadio' );
пока
$MobileRadio.checked = true;
не будет работать,
$MobileRadio[0].checked = true;
воля.
ваш селектор может быть так же, как другие парни выше рекомендовал тоже.
Это работает для нескольких переключателей
$('input:radio[name="Aspirant.Gender"][value='+jsonData.Gender+']').prop('checked', true);