2011-11-28 2 views
0

나는 다음과 같은 jQuery 코드가 있습니다jQuery를 - 확인 대화 상자 반환 값을 기다리는

<script type="text/javascript" charset="utf-8"> 
    $(function() { 

     initConfirmbinding(); 

     $('#dialog').dialog({ 
     autoOpen: false, 
     width: 'auto', 
     modal: true, 

     buttons: { 
       "Delete": function() { 
        $(this).dialog("close");    
        alert("You pressed OK!"); 
        return true; 
        }, 
       "Cancel": function() { 
        $(this).dialog("close"); 
        return false; 
        } 
     } 
     }); 

    function initConfirmbinding(){ 
      // Dialog Link 
      $('.confirm').click(function(){ 
       return $('#dialog').dialog('open'); // Here it doesn't stops for the return value!! 
      }); 
    } 
    </script> 

그리고이 다른 코드 :

... 
<c:foreach ...> 
<h:commandLink styleClass="confirm" action="#{myBean.delete}"> 
     <img src="/resources/images/delete-bw.png"/>  
</h:commandLink> 
<c/:foreach> 

... 
<!-- ui-dialog --> 
<div id="dialog" title="Question" style="display: none;"> 
     This item will be deleted, confirm?   
</div> 

난 후 myBean.delete에 전화를 걸 필요를 사용자는 대화 상자을 확인하지만 대화 상자가 계속 열리면서 계속 호출합니다. 동기화 된 값을 반환하도록 대화 상자를 만들려면 어떻게해야합니까? 따라서 commandLink는 동작을 수행 할 수 있는지 여부를 알 수 있습니다.

가 나는 콜백을 사용할 수 있습니다 알고 있지만, 콜백이 동작을 실행할 결정하는 결과를 기다리고 CommandLink는 이후 옵션이 아닙니다, 나는 콜백을 사용하는 경우 내가 직접 전화를해야합니다 무한 루프를 만드는 commandLink.click.

심지어 다시 콜백를 사용하는 방법이있을 수 있습니다 생각, 생각하지만 난 당신이 일을 끝낼 때 호출 할 콜백 대화에 어떻게 보낼 수 있습니다.

감사합니다.

답변

0

코드 실행을 중단하고 대기 할 수있는 방법이 없습니다. 당신이 할 수있는 유일한 일은 계속하기 전에 사용자가 무언가를 선택해야하기 때문에 대화 상자 아래의 페이지를 차단하여 모달 대화 상자를 만드는 것입니다.

당신이 자바 스크립트 함수로 빈의 #{myBean.delete} 방법을 노출하고 jQueryUI 대화의 DeleteCancel 핸들러에 적절하게 호출하면 내가 볼때는 문제가 해결 될 수
+0

안녕하세요 Justing808 예, 이미 모달 대화 상자입니다. 문제는 확인 대화 상자의 응답을 기다리는 대신 ** onclick ** 이벤트가 발생한 직후에 작업을 계속 실행하는 'commandLink'에 있습니다. –

0

. RichFaces 라이브러리를 사용할 수있는 경우 a4j:jsFunction 을 참조하십시오. 그러나이 경우 삭제 버튼 클릭은 순수한 아약스 호출이어야합니다. 즉, onclick에 대화 상자를 불러오고 동작을 지정하지 않을 수 있습니다. 그렇지 않으면 재발생을 막을 수있는 방법이 없습니다.