2011-07-06 2 views
26
<input type="radio" name="group" value="book_folder" onchange="makeRadioButtons()">Create New Book</input> 

<input type="radio" name="group" value="book_chapter" onchange="makeCheckBoxes()">Create New Chapter</input> 

위의 코드를 사용하고 있는데 두 번째 라디오 버튼을 클릭했을 때 두 개의 이벤트가 발생합니다. 하나는 체크되지 않은 버튼에서, 논리적으로 말하면, 두 단추는 상태가 변경 되었기 때문에 onclick() 이벤트가 아닌 onchange() 이벤트를 바인드했습니다. 그러나 그것은 막 체크 된 버튼으로부터 하나의 이벤트를 얻는 것처럼 보입니다. 이 html에서 원하는 동작입니까? 선택을 취소 한 경우 어떻게 버튼에서 이벤트를 가져올 수 있습니까?onClick()과 onChange() (라디오 버튼)의 차이점

답변

10

사용이 원하는 동작을 얻을 수 있습니다 : -

var ele = document.getElementsByName('group'); 
var i = ele.length; 
for (var j = 0; j < i; j++) { 
    if (ele[j].checked) { //index has to be j. 
     alert('radio '+j+' checked'); 
    } 
    else { 
     alert('radio '+j+' unchecked'); 
    } 
} 

는 도움이되기를 바랍니다.

+0

의미 나는 모든 교환 이벤트에서이 함수를 호출 shud? – samach

+0

이 코드를 사용하여 어떻게 든 ele.count()가 null입니다! : S – samach

+1

방금 ​​찾은 .... 만약'ele.length; '를 사용하면 잘 동작합니다 ... 어떤 라디오 버튼이 체크되고 선택되지 않았는지를 알려줍니다 ... 유일한 prblm은 우리가 그룹 내의 버튼. – samach

7

두 확인란 모두 하나의 HTML 요소를 구성하며 이름은 group입니다. 그래서 여기에 하나의 이벤트 만 있습니다.

Here은 각각의 개별 확인란을 반복하고 값에 액세스하는 방법을 보여주는 데모 예제입니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 그룹을 해제하면 ... 동시에 모두 선택할 수 있습니다 .. 한 번에 하나의 버튼 만 선택하고 싶습니다! – samach

+0

@Salman mahmood : 내 편집을 참조하십시오. –

+0

@Salman 그런 다음 jQuery를 사용하여 id 속성을 사용하여 라디오에 이벤트를 첨부 할 수 있습니다. 이 바이올린을 확인하십시오 : http://jsfiddle.net/erKURITA/ZYR6N/2/ – erKURITA

0

변수를 사용하여 현재 선택된 라디오 버튼의 값을 저장할 수 있으므로 이벤트가 발생하면 이전의 체크 된 버튼 값이 저장되므로 한 번만 라디오 버튼을 클릭하면됩니다. 확인해 봐. 그런 다음 업데이트 된 라디오 버튼 확인 값을 저장할 수 있습니다.

4

브라우저에는 하나의 이름을 가진 N 개의 라디오 버튼이 하나의 컨트롤입니다. 게시 데이터 (또는 데이터 가져 오기)를 서버로 다시 보내려는 경우 매개 변수의 키로 name 속성을 사용하고 해당 매개 변수의 값으로 해당 이름 속성이있는 현재 선택된 라디오 버튼의 값을 사용하기 만합니다. 매개 변수를 보냈습니다. 그래서 라디오를 그룹으로 묶을 속성을 지정해야합니다. 따라서 onchange는 10 개의 라디오에 대해 논리적으로 10 번 발생해서는 안됩니다. 브라우저 시점에서 group 컨트롤의 값이 book_folder에서 book_chapter으로 변경되었습니다. 그게 다야.

2
$(document).ready(function(){ 
     $("input[name='group']").on(
     { 
      'change' : function() 
        { 
         $.each($("input[name='group']"), 
           function() 
           { 
           var ObjectId, ObjectValue; 

           if($(this).is(':checked')) 
           { 
            /*Checked radio button OBJECT */ 

            console.log(this);      /* Jquery "this" Object */ 
            ObjectId = $(this).attr('id');  /* Id of above Jquery object */ 
            ObjectValue = $(this).val();   /* Value of above Jquery object */ 
           } 
            else 
           { 
            /* UnChecked radio button OBJECT */ 
            console.log(this);      /* Jquery "this" Object */ 
            ObjectId = $(this).attr('id');  /* Id of above Jquery object */ 
            ObjectValue = $(this).val();   /* Value of above Jquery object */ 
           } 
           } 
          ); 
        } 
     } 
    ); 
    }); 
관련 문제