2009-11-28 6 views
2

У меня возникла проблема с использованием jQuery Dialog и Ajax submit в JSF. У меня есть следующий код для отображения диалоговых окон: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»? Мне просто нужно выполнить отправку, если и только если пользователь нажмет OK. Спасибо за помощь JQ

ответ

4

Вы можете определить:

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

И называют его в функции ОК, как:

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

Это работает для меня довольно ОК :-) спасибо – JQueryNeeded

+1

@JQueryNeeded в stackoverflow вы должны отмечать ответы, которые работают на вас как принятые. это делается через отметку ниже счетчика голосов. – Bozho

+0

, конечно, сделано :-) – JQueryNeeded