2009-10-08 11 views
1

J'ai besoin de vérifier deux conditions sans rapport lorsque l'utilisateur clique sur soumettre, et demander des commentaires de l'utilisateur pour chacun.Puis-je avoir deux boîtes de dialogue successives en javascript?

Je peux obtenir une boîte de dialogue jquery fonctionnant très bien, mais j'en aurai parfois besoin de deux dans une rangée, et ensuite avoir terminé l'événement de bouton.

Voici l'essentiel: Je bouton

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />

puis certains Jquery vérifier une certaine condition que si elle est vraie ouvre une fenêtre. Si la boîte de dialogue ouvre je retourne false pour l'événement clic d'origine ne se produit pas, mais dans la plupart des cas, je veux le laisser passer à travers:

$("#<%=btnSubmit.ClientID %>").click(
     function() { 
      if (Condition) { 
       $('#Dialog').dialog('open'); 
       return false; 
      } 
      return true; 
     } 
     ); 

Je ne suis pas à l'aide des boutons de dialogue réguliers, mais une autre asp: bouton qui appelle un événement OnClick différent dans le code-behind:

$("#Dialog").dialog({ 
      bgiframe: true, 
      autoOpen: false, 
      height: 90, 
      width: 450, 
      modal: true, 
      close: function() {} 
<div id="Dialog"> 
    <asp:Button ID="Button1" runat="server" Text="OK" OnClick="btnDeleteSomethingThenSubmit_Click" /> 
    <input type="button" value="Cancel" id="btnCancelDialog" /> 
</div> 

Tout ce qui est génial. Fonctionne quand même. Mais j'ai également besoin d'une autre condition vérifiée, avec un dialogue différent mais cette fois juste un drapeau oui/non et je n'ai pas besoin de frapper un événement côté serveur, alors comment puis-je en obtenir un en premier, attendre la réponse et définir un valeur, pop la seconde, puis allez à l'événement OnClick? Quelque chose comme:

$("#<%=btnSubmit.ClientID %>").click(
     function() { 
      if (OtherCondition) { 
       $('#Dialog2').dialog('open'); 

      } 
      if (Condition) { 
       $('#Dialog').dialog('open'); 
       return false; 
      } 
      return true; 
     } 
     ); 

Ce qui évidemment ne fonctionne pas.

Répondre

1

Ne pourriez-vous avoir quelque chose comme:

$("#<%=btnSubmit.ClientID %>").click(
    function() { 
    var success = true; 
    if (OtherCondition) { 
     $('#Dialog2').dialog('open'); 
     success = false; 
    } 
    if (Condition) { 
     $('#Dialog').dialog('open'); 
     success false; 
    } 
    return success; 
    } 
); 

Fondamentalement, attrapez soit dialogue retour false dans une variable, sinon retour true et laisser la forme de soumettre?

0

boîtes de dialogue jQuery sont non-blocage et ne se comportent pas comme des boîtes de dialogue JavaScript natifs, ce qui est la raison pour laquelle vous ne pouvez pas faire

$("#<%=btnSubmit.ClientID %>").click(function() { 
    if (OtherCondition) { 
     $('#Dialog2').dialog('open'); 
    } 
    if (Condition) { 
     $('#Dialog').dialog('open'); 
     return false; 
    } 
    return true; 
}); 

Vous devez utiliser le close callback comme ceci:

$("#<%=btnSubmit.ClientID %>").click(function() { 
    if (OtherCondition) { 
     $('#Dialog2').dialog('open', { 
      close: function() { 
       if (Condition) { 
        $('#Dialog').dialog('open', { 
         // Call some function here to report the status 
         close: function() {} 
        }); 
       } else { 
        // Call some function here to report a different status 
       } 
      } 
     }); 
    } 
}); 
Questions connexes