2009-11-28 3 views
2

J'ai un problème avec l'utilisation de jQuery Dialog et Ajax submit dans JSF. J'ai le code suivant pour afficher des fenêtres de dialogue:JQuery, JSF et 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> 

maintenant, après avoir affiché la boîte de dialogue, le A4j.AJAX.Submit (..) est exécuté, est là de toute façon, que je peux, par exemple, passer le tout A4J.AJAX.Soumettre (...) à "dialogue" et l'exécuter à partir de "ok" option? Je dois simplement exécuter submit si et seulement si l'utilisateur clique sur OK. Nous vous remercions de l'aide JQ

Répondre

4

Vous pouvez définir:

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

et l'appeler dans la fonction OK, comme:

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

Il fonctionne pour moi :-) ok merci assez – JQueryNeeded

+1

@JQueryNeeded sur stackoverflow vous êtes censé marquer les réponses qui vous conviennent. Cela se fait via la coche en dessous du compteur de votes. – Bozho

+0

bien sûr, fait :-) – JQueryNeeded

Questions connexes