jQuery로 라디오 옵션 검사 onload를 설정하는 방법


297

jQuery로 라디오 옵션 검사 onload를 설정하는 방법은 무엇입니까?

기본값이 설정되어 있지 않은지 확인한 다음 기본값을 설정해야합니다.


1
@ryenus는 다른 질문 전에 내 질문을 한 이후에 다른 질문이 내 복제품이 아닌가?
Phill Pafford

답변:


558

예를 들어 다음과 같은 라디오 버튼이 있다고 가정하십시오.

<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>

라디오를 확인하지 않으면 "Male"onload 값을 가진 것을 확인하려고합니다.

$(function() {
    var $radios = $('input:radio[name=gender]');
    if($radios.is(':checked') === false) {
        $radios.filter('[value=Male]').prop('checked', true);
    }
});

IIRC는 Paolo, 궁금한 점에 대해서는 checked 속성이 checked = "checked"로되어 있다고 말하고 있습니다 (잘못되었을 수도 있습니다). 이 예제에서 jQuery가 true를 'checked'로 변환합니까? 그냥 궁금해서 ...
alex

8
내 원래 예제는 'checked', 'checked'였으며, 어느 것이 옳은지를 결코 기억할 수없는 것 중 하나입니다. jQuery는 어느 쪽이든 알아낼 수 있지만 DOM 요소의 실제 확인 된 속성을 설정하려면 document.getElementById ( 'x'). checked = true와 같은 부울이어야합니다. -나는 그와 함께 갔다.
Paolo Bergantino가

이 대괄호 표기법을 추가하려면 [name = gender]가 Windows Phone 7의 재고 브라우저에서 작동하지 않습니다.
最 白 目

방금 FF 및 jQuery 1.9.1 및 .attr ( 'checked', true); 그러나 작동하지 않습니다. .prop ( 'checked', true); 그렇습니다. 봐 stackoverflow.com/questions/4618733/... (? 중복)
IARI

빠른 방법 : $radios.removeAttr('checked')소품 앞에 사용하지 마십시오 . 브라우저와 게시 된 값을 혼동합니다.
igasparetto

109

하나의 라이너는 어떻습니까?

$('input:radio[name="gender"]').filter('[value="Male"]').attr('checked', true);

더 복잡한 이름 값을 지원하므로 위의 내용이 더 좋습니다.
J. Martin

13
이것은 ops 질문에 완전히 대답하지는 않습니다. 기본 옵션이 이미 선택되어 있는지 확인해야합니다. 또한 이런 종류의 작업에는 attr () 대신 prop ()을 사용해야합니다. 설명은 "속성 대 속성"섹션 api.jquery.com/prop를 참조하십시오 . 또한 추가 필터가 필요하지 않습니다. $ ( "input [name = gender] [value = Male]"). prop ( "checked", true);
jackocnr

3
이 솔루션은 라디오를 처음 설정할 때 작동하지만 나중에 실패합니다. "attr"대신 "prop"를 사용하면 완벽하게 작동합니다. 따라서 $ ( 'input : radio [name = "gender"]'). filter ( '[value = "Male"]'). prop ( 'checked', true);
Andrew

2
올바른-prop ()는 이제 속성에 액세스하기 위해 권장되는 방법입니다.
Andrew McCombe

1
더 간단하게 : $ ( 'input : radio [name = "gender"] [value = "Male"]'). attr ( 'checked', true);
Régis

52

이로 인해 form.reset () 실패가 발생합니다.

$('input:radio[name=gender][value=Male]').attr('checked', true);

그러나 이것은 작동합니다.

$('input:radio[name=gender][value=Male]').click();

5
더 읽기 쉬운 trigger ( 'click')를 사용하고 메소드 호출을 중지하는 것이 좋습니다.
Barkermn01

35

JQuery에는 실제로 라디오와 체크 박스의 체크 상태를 설정하는 두 가지 방법이 있으며 HTML 마크 업에서 value 속성을 사용하는지 여부에 따라 다릅니다.

값 속성이있는 경우 :

$("[name=myRadio]").val(["myValue"]);

값 속성이없는 경우 :

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

자세한 내용은

첫 번째 경우 이름을 사용하여 전체 라디오 그룹을 지정하고 val 함수를 사용하여 선택할 라디오를 찾도록 JQuery에 지시합니다. val 함수는 1 요소 배열을 가져와 값이 일치하는 라디오를 찾고 checked = true로 설정합니다. 이름이 같은 다른 사람은 선택이 취소됩니다. 일치하는 값을 가진 라디오가 없으면 모두 선택이 취소됩니다. 이름과 값이 같은 라디오가 여러 개 있으면 마지막 라디오가 선택되고 다른 라디오는 선택 해제됩니다.

라디오에 값 속성을 사용하지 않는 경우 고유 ID를 사용하여 그룹에서 특정 라디오를 선택해야합니다. 이 경우 prop 함수를 사용하여 "checked"속성을 설정해야합니다. 많은 사람들이 확인란과 함께 value 속성을 사용하지 않기 때문에 # 2는 확인란과 라디오에 더 적합합니다. 또한 확인란의 이름이 같은 확인란은 그룹을 형성하지 않으므로 확인란을 선택할 수 있습니다 $("[name=myCheckBox").prop("checked", true);.

여기에서이 코드를 사용할 수 있습니다 : http://jsbin.com/OSULAtu/1/edit?html,output


22

@Amc의 답변이 마음에 들었습니다. filter () 호출을 사용하지 않기 위해 표현식을 더 압축 할 수 있다는 것을 알았습니다 (@chaiko는 분명히 이것을 알았습니다). 또한 prop ()는 jQuery v1.6 +의 경우 attr ()과 비교하는 방법 입니다. 주제에 대한 공식 우수 사례는 prop ()jQuery 문서를 참조하십시오 .

@Paolo Bergantino의 답변과 동일한 입력 태그를 고려하십시오.

<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>

업데이트 된 one-liner는 다음과 같이 읽을 수 있습니다.

$('input:radio[name="gender"][value="Male"]').prop('checked', true);

15

나는 당신이 그 이름이 독특하고 그룹의 모든 라디오가 같은 이름을 가지고 있다고 가정 할 수 있다고 생각합니다. 그런 다음 jQuery 지원을 다음과 같이 사용할 수 있습니다.

$("[name=gender]").val(["Male"]);

참고 : 배열 전달이 중요합니다.

조건부 버전 :

if (!$("[name=gender]:checked").length) {
    $("[name=gender]").val(["Male"]);
}

1
이것은 모든 요소를 ​​값으로 스캔하는 것이 좋지 않습니다. 이것이 권장되지 않습니다
Barkermn01

@MartinBarker 당신은 '스캔'으로 당신이 무엇을 설명 할 수 있습니까?
Saram

당신은 아무것도를 사용하지 않는 경우, DOM을 검색하지만이 jQuery를 강제 속성은 DOM의 모든 요소 불구 가서 같은 일치하는 확인하기 위해 사용하는 것처럼 $("*")당신이 임대에서 유형을 사용해야합니다 그래서 모든 것을 일치합니다 $("input")또는 ID는 것 DOM이 id로 요소를 얻기위한 기본 호출을 가지고 있기 때문에 이상적입니다
Barkermn01

@MartinBarker-동의합니다. 일반적으로 나는 선택자 앞에 form id를 붙이거나 context param을 제공한다. 현재 스캔 DOM은 jQuery 노력이 아니라 내부 브라우저 엔진 document.querySelectorAll으로 모든 작업을 수행합니다.
Saram

사용, 위의 문제 해결하기 위해, $("input[name=gender]")또는 $("input[name=gender]:radio")(최신 브라우저의 경우) 또는$("input[name=gender][type=radio]")
데이비드 Balažic

7

당신이 정말로 역동적이기를 원하고 들어오는 데이터에 해당하는 라디오를 선택한다면, 이것은 작동합니다. 전달 된 데이터의 성별 값을 사용하거나 기본값을 사용합니다.

if(data['gender'] == ''){
 $('input:radio[name="gender"][value="Male"]').prop('checked', true);
}else{
  $('input:radio[name="gender"][value="' + data['gender'] +'"]').prop('checked', true);
};

5

기본 JS 솔루션 :

 document.querySelector('input[name=gender][value=Female]').checked = true;

http://jsfiddle.net/jzQvH/75/

HTML :

<input type='radio' name='gender' value='Male'> Male
<input type='radio' name='gender' value='Female'>Female

3

그리고 모델에서 값을 전달하고 값을 기반으로로드 할 때 그룹에서 라디오 버튼을 선택하려면 다음을 사용하십시오.

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>

2

그럴 필요는 없습니다. 간단하고 오래된 HTML로 원하는 것을 얻을 수 있습니다. 다음과 같이 기본적으로 확인하려는 라디오를 확인
<input type='radio' name='gender' checked='true' value='Male'>
하면 페이지가로드되면 확인됩니다.


3
예. 추천 사이트가 페이지로드시 기본값을 전달하므로 동적이어야합니다. 이 질문에 대해 생각한 지
오래

2
 $("form input:[name=gender]").filter('[value=Male]').attr('checked', true);

6
코드 전용 답변을 게시하지 마십시오. 설명도 부탁드립니다.
Lee Taylor

2

위의 방법을 사용한 예는 다음과 같습니다.

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

자바 스크립트에서 :

$("[name = 'radio-choice-2'][value='choice3']").prop('checked', true).checkboxradio('refresh');

1

라디오 입력 값을 가져올 때이 동작에 유의하십시오.

$('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()예상대로 라디오 입력의 확인 된 값을 반환하지 않습니다. 첫 번째 라디오 버튼의 값을 반환합니다.


1

De esta forma Jquery obtiene solo el elemento checked

$('input[name="radioInline"]:checked').val()

2
답변을 설명하고 코드를 포맷해야합니다.
Michael

0

// 자바 스크립트 나 백본과 같은 프레임 워크에서이 작업을 수행하는 경우 이와 같은 상황이 발생할 수 있습니다.

$MobileRadio = $( '#mobileUrlRadio' );

동안

$MobileRadio.checked = true;

작동 안 할 것이다,

$MobileRadio[0].checked = true;

의지.

위의 다른 사람들도 추천자가 될 수 있습니다.


0

여러 라디오 버튼에서 작동

$('input:radio[name="Aspirant.Gender"][value='+jsonData.Gender+']').prop('checked', true);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.