2014-01-16 3 views
44

По какой-то причине я не могу понять это.Отметьте переключатель с помощью javascript

У меня есть некоторые кнопки радио в моем HTML, который переключает категории:

<input type="radio" name="main-categories" id="_1234" value="1234" /> // All 
<input type="radio" name="main-categories" id="_2345" value="2345" /> // Certain category 
<input type="radio" name="main-categories" id="_3456" value="3456" /> // Certain category 
<input type="radio" name="main-categories" id="_4567" value="4567" /> // Certain category 

Пользователь может выбрать в зависимости от того, он/она хочет, но когда определенное событие вызывает, я хочу установить 1234 быть установлен проверенным радио , потому что это переключатель по умолчанию, установленный по умолчанию.

Я попытался версии этого (с и без JQuery):

document.getElementById('#_1234').checked = true;

Но это, похоже, не обновлять. Мне нужно, чтобы он заметно обновился, чтобы пользователь мог его увидеть. Может ли кто-нибудь помочь?

EDIT: Я просто устал и проглядел #, спасибо, что указал, что и $.prop().

+0

проверить этот StackOverflow вопрос: [Как проверить радиокнопку с JQuery] [1] [1]: http://stackoverflow.com/questions/5665915/how-to-check-a-radio -button-with-jquery –

+5

измените на 'document.getElementById ('_ 1234'). Checked = true;' – stackErr

+1

@stackErr без '#' –

ответ

81

Не смешивать CSS синтаксис (# для идентификатора) с нативной JS

Native JS решение:

document.getElementById("_1234").checked = true;

JQuery решение:

$("#_1234").prop("checked", true);

+1

Технически это синтаксис селектора CSS. jQuery только что заимствовал и расширил его –

+0

Спасибо, @TimSeguine – zavg

+0

jQuery получил его от 'querySelector', я бы представлял. – Andy

11

Если вы хотите установить кнопку «1234», вы должны использовать свой «идентификатор»:

document.getElementById("_1234").checked = true; 

Когда вы используете браузер API («getElementById»), вы не используете синтаксис селектора; вы просто передаете фактическое значение «id», которое вы ищете. Вы используете синтаксис селектора с jQuery или .querySelector() и .querySelectorAll().

+1

Извините, просто неправильная копия-вставка. Обновлено сейчас. – ptf

1

С помощью функции document.getElementById() вам не нужно передавать # перед идентификатором элемента.

Код:

document.getElementById('_1234').checked = true; 

Демо: JSFiddle

6

Самый простой способ, вероятно, будет с JQuery, следующим образом:

$(document).ready(function(){ 
    $("#_1234").attr("checked","checked"); 
}) 

Это добавляет новый атрибут "проверен" (который в HTML не нуждается в значении). Только не забудьте включить библиотеку JQuery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
5

Сегодня, в 2016 году, это сохранить использовать document.querySelector, не зная идентификатор (особенно если у вас есть более чем 2 кнопки радио):

document.querySelector("input[name=main-categories]:checked").value 
Смежные вопросы