2011-11-28 134 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

沒有辦法使代碼的執行停止並等待。你可以做的唯一的事情就是通過阻塞對話框下的頁面來創建一個模式對話框,所以用戶在繼續之前必須選擇一些內容。

+0

Hello Justing808,是的,它已經是一個模態對話框,問題出在'commandLink'上,它在** onclick **事件發生後繼續執行動作,而不是等待確認對話框的回答。 –

0

我看到它的方式,您的問題可以,如果你暴露bean的#{myBean.delete}方法的javascript函數和jQueryUI的對話框的DeleteCancel相應的處理程序調用它來解決。 如果您可以使用RichFaces庫,請參閱a4j:jsFunction 但是在這種情況下,刪除按鈕點擊必須是純粹的ajax調用。即您可以在onclick中調用該對話框,並且不指定任何操作。否則,您無法停止回發。