2009-11-28 49 views
2

我在JSF中使用jQuery對話框和Ajax提交時遇到了問題。 我有顯示對話窗口下面的代碼:JQuery,JSF和a4j:commandLink

   <script type="text/javascript"> 
         jQuery(function(){ 
           // Dialog 
           jQuery('#dialog').dialog({ 
             dialogClass: 'alert', 
             autoOpen: false, 
             width: 300, 
             height: 150, 
             modal: true, 
             resizable: false, 
             overlay: { 
               backgroundColor: '#000', 
               opacity: 0.5 
             }, 
             buttons: { 
               "Ok": function() { 
                 jQuery(this).dialog("close"); 
                 return true; 
               }, 
               "Cancel": function() { 
                 jQuery(this).dialog("close"); 
                 return false; 
               } 
             } 
           }); 

           // Dialog Link 
           jQuery('#dialog_link').click(function(){ 
             jQuery('#dialog').dialog('open'); 
             return false; 
           }) 
           .hover( 
             function() { jQuery(this).addClass('ui-hover-state'); }, 
             function() { jQuery(this).removeClass('ui-hover-state'); } 
           ); 

         }); 
       </script> 
It works as it should - it displays box when link is clicked. 
Now, I have something like this, for deleting something: 
<a4j:commandLink 
     actionListener="#some.action" 
     reRender="something" 
     onclick="if(!jQuery('#dialog').dialog('open')){return false}" 

ok, this commandLink is rendered as follows: 
<a href="#" 
     id="some:long:id:j_id338" 
     name="formName:something:j_id338" 
     onclick="if(!jQuery('#dialog').dialog('open')){return 
false};A4J.AJAX.Submit('something:something'); 
     return false;" 
>drop</a> 

現在,顯示該對話框之後,A4j.AJAX.Submit(..)是執行 ,反正是有,我可以舉例來說,將整個 A4J.AJAX.Submit(...)傳遞給「對話框」並從「ok」選項執行它? 我只需要執行提交,當且僅當用戶點擊確定。 謝謝大家幫忙 JQ

回答

4

您可以定義:

<a4j:jsFunction name="okClicked" 
    actionListener="#{some.action}" 
    reRender="something" /> 

,並調用它在OK功能,如:

"Ok": function() { 
    jQuery(this).dialog("close"); 
    okClicked(); 
    return true; 
} 
+0

它爲我的作品非常好:-)謝謝 – JQueryNeeded 2010-03-18 10:19:50

+1

@JQueryNeeded在stackoverflow你應該標記爲您接受的答案。這是通過投票櫃檯下面的勾號完成的。 – Bozho 2010-03-18 10:36:36

+0

當然,完成:-) – JQueryNeeded 2010-03-18 14:27:03