자바 스크립트로 라디오 버튼 확인


95

어떤 이유로 나는 이것을 알아낼 수없는 것 같습니다.

내 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;

그러나 업데이트되지 않는 것 같습니다. 사용자가 볼 수 있도록 눈에 띄게 업데이트해야합니다. 아무도 도울 수 있습니까?

편집 : 나는 단지 피곤하고 #그것을 지적 해 주셔서 감사합니다 $.prop().


이 StackOverflow 질문 확인 : [jQuery로 라디오 버튼을 확인하는 방법] [1] [1] : stackoverflow.com/questions/5665915/…
Mandy

8
변화document.getElementById('_1234').checked = true;
stackErr

1
@stackErr 포함하지 않는#
팀 Seguine

죄송합니다. 복사 붙여 넣기가 잘못되었습니다. 지금 업데이트되었습니다. @FelipeKM 그럼 저를 도와주세요, 도움이되는 것을 찾지 못했습니다.
ptf

@kjelelokk 내 댓글 또는 Pointys 답변 확인
stackErr

답변:


151

CSS / JQuery 구문 ( #식별자 용)을 네이티브 JS와 혼합하지 마십시오 .

네이티브 JS 솔루션 :

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

JQuery 솔루션 :

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


1
기술적으로는 CSS 선택기 구문입니다. jQuery를 단지 빌려 그것을 확장
팀 Seguine에게

jQuery는 querySelector상상할 수 있습니다.
Andy

훨씬 더보다는.attr("checked", "checked")
ma77c

@Andy-Sizzle은 2006 년 초부터 jQuery에서 사용되었습니다. ( en.wikipedia.org/wiki/JQuery#History ). querySelector2009 년까지 브라우저에 제공되지 않았고 그 후 얼마 전까지 개발자가 널리 사용하지 못했습니다. 나는 jQuery를 그렇게 많이 사용한 적이 없지만 JS의 진화에 큰 영향을 미쳤다.
Rounin

이것은 확인란을 설정하지만 반드시 관련 이벤트를 트리거하지는 않습니다. 사용자가 라디오 버튼을 클릭하면 어떤 이벤트가 트리거됩니까?
robisrob

16

"1234"버튼을 설정하려면 "id"를 사용해야합니다.

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

브라우저 API ( "getElementById")를 사용하는 경우 선택기 구문을 사용하지 않습니다. 찾고있는 실제 "id"값만 전달하면됩니다. jQuery 또는 .querySelector()및에서 선택기 구문을 사용합니다 .querySelectorAll().


모두가 ID로 요소를 얻고 있습니다. 동일한 이름의 라디오 버튼이 두 개 이상 있습니다. 그리고 나는 그것이 대부분의 사람들이 이름으로 라디오 그룹을 선택하고 그 중 하나를 값 확인을 기반으로 선택하는 데 필요한 것이라고 생각합니다.
Ndm Gjr

@NadeemGorsi "id"속성은 둘 이상의 요소에서 공유 할 수 없습니다. 모든 "id"값은 주어진 페이지에서 고유해야합니다.
Pointy

9

현재 2016 년 document.querySelector에는 ID를 모르고 사용하는 것이 저장됩니다 (특히 라디오 버튼이 2 개 이상인 경우).

document.querySelector("input[name=main-categories]:checked").value

3
좋아,하지만 역효과를 얻거나 가치에 따라 라디오를 확인하려면 어떻게해야하는지 .. 그게 사실 질문이었던 것입니다.
Ndm Gjr 2019

1
@NadeemGorsi 나는 QuerySelector를 사용하여 라디오 버튼을 선택하거나 "확인"하는 대답을 제공했습니다
kevinf

6

가장 쉬운 방법은 다음과 같이 jQuery를 사용하는 것입니다.

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

이렇게하면 새 속성 "checked"(HTML에서는 값이 필요하지 않음)가 추가됩니다. jQuery 라이브러리를 포함하는 것을 잊지 마십시오.

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

아니면 그냥$("#_1234").prop("checked", true)
undefined

3

document.getElementById()함수를 사용 하면 #요소의 ID 앞에 전달할 필요가 없습니다 .

암호:

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

데모 : JSFiddle


3

웹 확장 옵션 페이지 내에서 Firefox 72의이 자바 스크립트 코드를 사용하여 라디오 입력 버튼을 선택 (확인)하여 값을로드 할 수있었습니다.

var reloadItem = browser.storage.sync.get('reload_mode');
reloadItem.then((response) => {
    if (response["reload_mode"] == "Periodic") {
        document.querySelector('input[name=reload_mode][value="Periodic"]').click();
    } else if (response["reload_mode"] == "Page Bottom") {
        document.querySelector('input[name=reload_mode][value="Page Bottom"]').click();
    } else {
        document.querySelector('input[name=reload_mode][value="Both"]').click();
    }
});

값을 저장할 관련 코드는 다음과 같습니다.

reload_mode: document.querySelector('input[name=reload_mode]:checked').value

다음과 같은 HTML이 주어집니다.

    <input type="radio" id="periodic" name="reload_mode" value="Periodic">
    <label for="periodic">Periodic</label><br>
    <input type="radio" id="bottom" name="reload_mode" value="Page Bottom">
    <label for="bottom">Page Bottom</label><br>
    <input type="radio" id="both" name="reload_mode" value="Both">
    <label for="both">Both</label></br></br>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.