2013-05-15 2 views
2

라디오 버튼이 사용 클릭시 변경되지 않도록 방지하려고합니다. 표준 jQuery를 사용할 때 작동하지만 jQuery Mobile을 포함 시키면 작동하지 않는 것 같습니다. jQuery Mobile에서해야 할 일이 있습니까?jQuery Mobile 클릭 event.preventDefault가 변경을 막지 못하는 것 같습니다

<fieldset data-role="controlgroup" data-type="horizontal"> 
     <input type="radio" name="trade-direction" id="buy" value="B" checked="checked" /> 
     <label for="buy">Buy</label> 

     <input type="radio" name="trade-direction" id="hold" value="H" /> 
     <label for="hold">Hold</label> 

     <input type="radio" name="trade-direction" id="sell" value="S" /> 
     <label for="sell">Sell</label> 
</fieldset> 

$('[name="trade-direction"]:radio').click(function(event) { 
    if(!confirm("Do You Want To Change?")) { 
     event.preventDefault(); 
    } 
}); 

아래의 코드는 jsFiddle의 코드에 대한 링크입니다.

http://jsfiddle.net/mikeu/xJaaa/

+0

왜 그렇게 잘 생겼는지 ... 나는 스타일에 영향을받지 않는 일반 스타일의 라디오 박스를 기대하고 있었는데 ... 나는 무엇을 얻지 못합니까? – hayonj

+0

jQuery Mobile 체크 박스가 선택되어 있습니다. – user1167442

+0

@hayonj 모든 스타일은 jQuery.Mobile –

답변

3

문제 jQuery.Mobile으로 상기 UI 변경함으로써 이루어진다 요소가 입력 요소 없다는 것이다. 실제로 라디오 요소는 실제로 클릭되지 않습니다. 클릭 된 요소는 <div class="ui-radio">입니다. 라디오 입력 자체에 바인딩하려면 change 이벤트를 사용해야하지만이 경우 변경이 이미 수행 된 후에 함수가 호출되기 때문에이 경우에는 작동하지 않습니다.

// Probably a good idea to give your fieldset an ID or class 

$('fieldset').delegate('.ui-radio','click',function(event){ 
     if(!confirm("Do You Want To Change?")) { 
     event.stopImmediatePropagation(); 
     event.preventDefault(); 
     } 
    }) 

event.stopImmediatePropagation() 입력에 클릭 이벤트를 트리거로하여 .ui-radio을 방지하고, event.preventDefault는 기본 동작을 방지 : 당신이 필요로하는 무엇

이 같은 것입니다. stopImmediatePropagation은 필요하지 않을 수도 있지만 다른 브라우저에서 도움이 될 수있는 추가 보증을 제공합니다.

+0

에 의해 수행됩니다. 회신 해 주셔서 감사합니다. 코드를 작동시킬 수없는 것 같습니다. http://jsfiddle.net/mikeu/qe29J를 살펴볼 수 있습니다./내가 바꿀 필요가있는 것을 알려줘? –

+0

감사합니다. 코드에 문제가 있음을 알았습니다. 대리자의 철자가 잘못되었습니다. 이제 확인 대화 상자에 두 번 표시되는 또 다른 문제가 있습니다. 어떤 문제를 해결할 수있는 방법이 있습니까? –

+0

죄송합니다. 맞춤법 오류에 죄송합니다. 나는 다른 것을 볼 것이다. – user1167442

관련 문제