2011-02-28 5 views
66

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

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

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

+1

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

답변

121

당신은 jQuery를 1.3

의 당신이

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

을 원하는에 대한 .change을 사용할 수 있습니다 당신은 더 이상 필요하지 않은 '@'. 선택하는 올바른 방법입니다 : 당신이 ID = radioButtonContainerId 여전히 따라 onclick을 사용하여 다음 중 어떤 것을 선택할 것인가를 확인 할 수 있습니다와 함께 용기에 라디오가있는 경우

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

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

+3

아래의 @JohnIdol의 솔루션과이 솔루션을 무선 값을 기반으로하는 조건문과 통합 할 수 있습니까? $ { "input = { 'lom'}"}) {{($ this) .val() === '1'} {{// 여기에 값에 기반한 조건문을 저장}; – LazerSharks

+0

jQuery 1.3부터는 ** name 속성에 '@'를 사용하면 안됩니다. 그렇게하면'jquery.self-0a6570c ... .js? body = 1 : 1464 Uncaught Error : 구문 오류, 인식 할 수없는 표현식 '오류가 발생합니다. 따라서 선택의 문제가 아닙니다. – scaryguy

6

$(document).ready(function() { 
    $('input:radio').change(function() { 
     alert('ole'); 
    }); 
}); 
+0

부재중입니다.); 뒤에서. –

40

잘되어야합니다

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

고맙습니다. 내 필드가 배열의 일부 였고 입력 [name = 'xxx'] 표기법을 사용할 수 없어서 저에게 효과적이었습니다. - crafter

+0

Tab 키를 사용하여 마커를 화살표 키로 움직여도 반응합니까? – Alisso

+0

모바일에서 작동하지 않습니다 # 선택자가 모바일에서 작동하지 않습니다. – zawhtut

3

DOM 검색을 제한하는 것이 좋습니다. 부모를 사용하는 것이 더 좋으므로 전체 DOM이 통과되지 않습니다.

IT IS VERY FAST

<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 
    }); 
8

이 작업을 수행하는 방법은 여러 가지가 있습니다. 관계없이 라디오 버튼 주위에 컨테이너를 두는 것이 좋습니다.하지만 버튼에 직접 클래스를 추가 할 수도 있습니다. 당신이 클래스에 의해 선택할 수 있습니다

<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에 의해 선택이 HTML로 어느 경우

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

이벤트는 라디오 중 하나를 클릭하면 트리거됩니다 버튼 또는 그것의 레이블, 비록 이상하게도 후자의 경우 ("#shapeList"로 선택) 레이블을 클릭하면 적어도 두 가지 이유로 FireFox에서 두 번 클릭 기능이 트리거됩니다. 클래스별로 선택하는 것은 그렇게하지 않을 것입니다.

SetShape는 기능이며, 다음과 같습니다

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

이 방법, 당신은 당신의 버튼에 라벨을 가질 수 있고, 다른 일을 같은 페이지에 여러 라디오 버튼 목록을 가질 수 있습니다. 버튼의 값에 따라 SetShape()에서 다른 동작을 설정하여 동일한 목록의 각 개별 단추를 다른 작업을 수행 할 수도 있습니다.

13
<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']"). 변경 (function() { // 여기 흥미로운 것을하십시오 }); –