2010-04-09 3 views
1

RadioButtonList 컨트롤이 있는데 사용자가 인덱스를 변경하려고하면 Javascript "확인"을하고 싶습니다. 현재 AutoPostBack은 TRUE로 설정됩니다. 물론 __doPostBack을 자바 스크립트 함수 등에서 호출 할 수 있습니다. jQuery로 몇 가지 시도를 했었지만 mousedown과 click을 걱정해야합니다. 그리고 나서 체크 박스 레이블을 클릭하여 선택할 수 있다는 사실이 항상 있습니다. 그것은 누구나 이것에 대한 좋은 해결책이 있습니까?RadioButtonList의 SelectedIndexChange에서 JavaScript가 "확인"됩니다.

분명히 말하면 선택을하기 전에 확인 상자를 표시하고 포스트 백을 트리거하는 방법을 찾고 있습니다.

답변

2

왜 클릭 이벤트를 사용하지 않습니까? 그것은 클라이언트 쪽 포스트 백 이벤트가 묶이는 방법입니다. 편집을 할

var rbList = $("input[name='MyButtonList']"); 
var checkedRB = rbList.filter(":checked"); 


rbList.filter(":not(:checked)").each(function() { 
    var origClick = this.onclick; 
    this.onclick = null; 

    $(this).click(function (evt) { 
     if(confirm("Post back?")) 
     { 
      origClick(); 
     } 
     else 
     { 
      if(evt.preventDefault) { evt.preventDefault(); } 
      evt.returnValue = false; 

      checkedRB.attr("checked",true);      
     }   
    });  
}); 
IE를 지원하기 위해 다음 jQuery 코드는 당신이 원하는 것을 성취 할 것이다

<table id="MyButtonList" border="0"> 
    <tr> 
    <td><input id="MyButtonList_0" type="radio" name="MyButtonList" value="1" checked="checked" /><label for="MyButtonList_0">Hello World</label></td> 
    </tr><tr> 
    <td><input id="MyButtonList_1" type="radio" name="MyButtonList" value="2" onclick="javascript:setTimeout('__doPostBack(\'MyButtonList$1\',\'\')', 0)" /><label for="MyButtonList_1">Hello World 2</label></td> 
    </tr> 
</table> 

예를 들어, 다음과 같은 HTML 렌더링됩니다 ", MyButtonList"라는 RadioButtonList을 부여

+0

비슷한 코드가 있습니다. 문제는 "확인"에서 "취소"를 눌러도 라디오 버튼이 계속 선택된다는 것입니다. 실제로 선택을 "방지"하지는 않습니다. –

+0

죄송합니다. 그 요구 사항도 잘못 이해했습니다. 내 수정 코드를 참조하십시오. evt.preventDefault()를 사용하여 버튼 선택을 취소 할 수 있습니다. – zincorp

+0

IE에서 FireFox와 다르게 라디오 버튼 취소를 처리하는 것으로 나타났습니다. 대신 현재 체크 된 버튼 (있는 경우)을 저장하고 다른 버튼의 클릭을 취소하면 복원해야합니다. 새로 편집 된 코드를 사용해보십시오. – zincorp

관련 문제