2010-06-08 5 views
1

J'utilise jquery ui 1.8 et j'ai une boîte de dialogue de modèle qui apparaît et si un utilisateur clique sur une case à cocher, une autre apparaît. Cela nécessite de dire "oui" ou "non", j'ai donc supprimé le "X" dans la boîte de dialogue et mis à false sur closeOnEscape.Pourquoi est-ce quand je mets "closeOnEscape" à false, puis "closeOnEscape" à true jquery dialog escape ne fonctionne pas?

Cependant, j'ai remarqué quand je l'ai fait que le dialogue du modèle en dessous se fermait quand ils frappaient s'échapper. Alors maintenant, quand celui qui apparaît lorsque la case est cochée, je désactive closeOnEscape dans la première boîte de dialogue.

Quand ils le ferment, je l'active de nouveau mais cela ne fonctionne pas. Je ne suis pas sûr pourquoi

Je fais même cela dans firebug. Je viens d'ouvrir ma première boîte de dialogue jusqu'à

Faites ceci en console pyromanes

$("#Dialog").dialog("option", "closeOnEscape", false); 

Ensuite, vérifiez que la fuite est maintenant désactivé. J'essaie alors de l'activer à nouveau

Pourtant, il ne permet jamais.

Modifier

Ok j'ai tout compris ça marche .... La chose est que l'utilisateur doit cliquer sur une partie de pied de page de la boîte de dialogue (où les boutons sont assis). Ce n'est bien sûr pas idéal puisque qui va penser à cliquer sur cette zone pour que ça marche?

+0

Plutôt que de jongler avec les échappements de la boîte de dialogue au-dessous, pourquoi ne pas simplement fermer la boîte de dialogue dessous et rouvrir quand celui sur ferme en utilisant l'événement close ? –

+0

Ensuite, je dois garder une trace de toutes les modifications qu'ils ont apportées à l'un des champs de la boîte de dialogue que je rouvre et ferme. Plus le formulaire dans la boîte de dialogue de celui-ci est généré par ajax il aurait besoin de faire une autre requête ajax sur le dessus. – chobo2

+0

Ah, gotcha. Je ne savais pas qu'il a été généré via un appel AJAX. Dans ce cas, que diriez-vous de cacher/montrer le dialogue sous-jacent au lieu de le fermer/l'ouvrir? –

Répondre

1

Vous pouvez essayer de remettre le focus dans la case à cocher de la première boîte de dialogue (ou un élément tabable dans le conteneur de dialogue).

Supposons que la boîte de dialogue qui s'ouvre lorsque vous cliquez sur la case à cocher - Oui/Non - a l'ID yesNoDialog. Et disons que la case à cocher dans la première boîte de dialogue (#Dialog, je suppose) a l'ID theCheckbox. Puis, lorsque vous fermez yesNoDialog, vous revenez à theCheckbox. Comme cette

$("#yesNoDialog").dialog({ 
    close: function() { 
     $("#theCheckbox").focus(); 
    } 
}); 

Voici un demo

Questions connexes