2010-01-29 7 views
7

J'essaie d'utiliser la boîte de dialogue jQuery comme écran de chargement pour ajax. Je l'ai très bien fonctionné jusqu'à présent mais j'aimerais que l'écran de chargement ne soit pas fermable. Cependant, il semble que la boîte de dialogue de l'interface utilisateur ne dispose pas de "fermable" en option?Boîte de dialogue jQuery UI - comment le rendre non fermable?

Comment pouvez-vous le rendre non-fermable? J'ai essayé de mettre closeText à blanc, mais cela n'a rien fait. Le petit 'X' apparaît toujours dans le coin supérieur droit.

Ne pensez-vous pas que l'option de fermeture devrait être une option pour le widget de dialogue?

Merci

Répondre

7

Ying, juste passer une fonction de rappel à beforeclose:

$("#loading").dialog({ 
    beforeclose: function(){ return false } 
    // other options here 
}); 
+0

droit, désolé. C'est exactement ce que j'aurais suggéré si vous n'aviez pas trouvé cette partie par vous-même. Content que ça a marché pour vous! Assurez-vous de marquer la réponse comme acceptée (cliquez sur la coche grise). Nous obtenons tous les deux des points de rep, et cela aide les personnes futures ayant le même problème à savoir quelle solution a fonctionné pour vous. Bienvenue à StackOverflow! –

+0

Oups, j'ai trouvé un problème avec cette solution. Quand j'appelle $ ("# loading"). Dialog ('close') maintenant il ne fait rien. J'avais besoin de ça pour travailler, j'ai donc décidé de cacher le "X" via css. – Ying

6

Doug, merci pour la réponse rapide. Cette action fermée désactivée. Cependant, il n'a pas caché le "X" dans le coin supérieur droit. J'ai fini par utiliser css pour cacher le "X".

/* hide the close x on loading screen */ 
.classForMyDialog .ui-dialog-titlebar-close { 
    display: none; 
} 
+2

Vous devez également envisager de définir closeOnEscape sur false, '$ (" .selector ") .dialog ({closeOnEscape: false});' à l'initialisation ou '$ (" .selector ") .dialog (" option "," closeOnEscape ", false);" plus tard pour le mettre à false –

1

Comment je suis arrivé à ce sujet grâce à Ying et Doug

Classe:

.myDialog .ui-icon{ 
    display:none !important; 
} 

Jquery:

$(".ajaxloader").dialog({ 
     modal:true, 
     resizable:false, 
     dialogClass:'myDialog' 
    }); 
+0

Merci, cela a fait l'affaire. –

+0

Cela masque également les icônes de la boîte de dialogue. Le sélecteur devrait être plus concret je crois. –

1

Je pense que Ying est sur la bonne voie, mais il se trouve que le .classForMyDialog (en supposant que c'est la div avec contenu de la boîte de dialogue) n'a pas l'icône en tant qu'enfant, donc cela n'a pas fonctionné.

J'ai eu du succès avec:

$("#myDialogDivID").parent().find(".ui-dialog-titlebar-close").hide() 

Le parent choisit la boîte de dialogue enveloppent div et nous pouvons trouver et cacher l'icône de fermeture.

Je profite également de cette occasion pour souligner le commentaire de définir:

closeOnEscape: false 
Questions connexes