자바 스크립트 jquery 라디오 버튼 클릭


89

2 개의 라디오 버튼과 jquery가 실행 중입니다.

<input type="radio" name="lom" value="1" checked> first
<input type="radio" name="lom" value="2"> second

이제 버튼으로 onClick을 설정하여 기능을 실행할 수 있습니다. 라디오 버튼 중 하나를 클릭 할 때 기능을 실행하는 방법은 무엇입니까?


4
노트. 많은 사람들이 키보드를 사용하여 양식을 탐색하므로 양식 요소가 클릭에 응답하지 않는 것이 가장 좋습니다.
superluminary

답변:


168

.change원하는 것을 사용할 수 있습니다.

$("input[@name='lom']").change(function(){
    // Do something interesting here
});

jQuery 1.3부터

더 이상 '@'이 필요하지 않습니다. 올바른 선택 방법은 다음과 같습니다.

$("input[name='lom']")

7
jQuery 1.3부터는 더 이상 '@'가 필요하지 않습니다. 올바른 선택 방법은 다음과 같습니다.$("input[name='lom']")
lubar

4
이 솔루션을 라디오 값을 기반으로하는 조건문으로 아래 @JohnIdol의 솔루션과 통합 할 수 있습니까? 전$("input[name='lom']").change(function(){ if ($(this).val() === '1') {..... // rest conditional statements based on values here } ;
LazerSharks

jQuery 1.3부터 name 속성에 '@'를 사용 하면 안됩니다 . 그렇게하면 jquery.self-0a6570c….js?body=1:1464 Uncaught Error: Syntax error, unrecognized expression오류가 발생합니다. 그래서 그것은 선택의 문제가 아닙니다.
scaryguy

53

id = radioButtonContainerId 인 컨테이너에 라디오가있는 경우 여전히 onClick을 사용할 수 있으며 어느 것이 선택되었는지 확인하고 그에 따라 일부 기능을 실행할 수 있습니다.

$('#radioButtonContainerId input:radio').click(function() {
    if ($(this).val() === '1') {
      myFunction();
    } else if ($(this).val() === '2') {
      myOtherFunction();
    } 
  });

감사합니다. 내 필드가 배열의 일부이고 input [name = 'xxx'] 표기법-<input type = "radio"name = "Need [measure_type]"id = "Need_measure_type"을 사용할 수 없었기 때문에 이것은 저에게 효과적이었습니다. value = "aaa">
crafter

아래로 탭하고 화살표 키로 마커를 이동해도 반응합니까?
Alisso

모바일에서는 작동하지 않습니다. # selector는 모바일에서 작동하지 않습니다.
zawhtut aug

19
<input type="radio" name="radio" value="creditcard" />
<input type="radio" name="radio" value="cash"/>
<input type="radio" name="radio" value="cheque"/>
<input type="radio" name="radio" value="instore"/>

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

1
이 답변은 코드를 이벤트에 연결하는 방법을 보여주지는 않지만 라디오 버튼 그룹의 값을 검색하는 방법에 대한 정보가 포함되어 있다는 점이 좋습니다.
Manfred

1
$ ( "input [@ name = 'lom']"). change (function () {// 여기서 흥미로운 일을하세요});
Bishoy Hanna 2014


8

이를 수행하는 방법에는 여러 가지가 있습니다. 라디오 버튼 주위에 컨테이너를 두는 것이 좋습니다.하지만 버튼에 직접 클래스를 넣을 수도 있습니다. 이 HTML로 :

<ul id="shapeList" class="radioList">
<li><label>Shape:</label></li>
<li><input id="shapeList_0" class="shapeButton" type="radio" value="Circular" name="shapeList" /><label for="shapeList_0">Circular</label></li>
<li><input id="shapeList_1" class="shapeButton" type="radio" value="Rectangular" name="shapeList" /><label for="shapeList_1">Rectangular</label></li>
</ul>

클래스별로 선택할 수 있습니다.

$(".shapeButton").click(SetShape);

또는 컨테이너 ID로 선택 :

$("#shapeList").click(SetShape);

두 경우 모두 라디오 버튼이나 레이블을 클릭하면 이벤트가 트리거되지만 후자의 경우 ( "#shapeList"로 선택) 이상하게도 레이블을 클릭하면 어떤 이유로 든 클릭 기능이 두 번 트리거됩니다. FireFox에서 최소한; 클래스별로 선택하면 그렇게되지 않습니다.

SetShape는 함수이며 다음과 같습니다.

function SetShape() {
    var Shape = $('.shapeButton:checked').val();
//dostuff
}

이렇게하면 단추에 레이블을 지정할 수 있고 동일한 페이지에 여러 가지 작업을 수행하는 여러 라디오 단추 목록을 가질 수 있습니다. 버튼의 값에 따라 SetShape ()에서 다른 동작을 설정하여 동일한 목록의 각 개별 버튼이 다른 작업을 수행하도록 할 수도 있습니다.


3

항상 DOM 검색을 제한하는 것이 좋습니다. 부모도 사용하는 것이 좋습니다. 그래야 전체 DOM이 통과되지 않습니다.

매우 빠릅니다

<div id="radioBtnDiv">
  <input name="myButton" type="radio" class="radioClass" value="manual" checked="checked"/>
 <input name="myButton" type="radio" class="radioClass" value="auto" checked="checked"/>
</div>



 $("input[name='myButton']",$('#radioBtnDiv')).change(
    function(e)
    {
        // your stuffs go here
    });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.