27 votes

Désactivez le bouton «X» en haut à droite de la boîte de dialogue

Double Possible:
Retirez le bouton de fermeture sur jQueryUI Dialogue?

Je suis en train de faire une boîte de dialogue qui invite l'utilisateur à accepter les conditions avant de continuer, et vous ne voulez pas permettre à l'utilisateur de cliquer sur le " X " dans le coin supérieur droit de la boîte de dialogue fermer. Je tiens à exiger que l'utilisateur, cliquez sur "j'accepte".

Est-il possible de désactiver le " X " dans la boîte de dialogue?

Précisions: je suis juste en utilisant le standard de jQuery UI dialog: $.la boîte de dialogue().

40voto

foxvor Points 271

J'ai trouvé cela sur un autre post, j'espère que cela aide, cela a fonctionné pour moi:

 $("#div2").dialog({
   closeOnEscape: false,
   open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
 

Voici le lien:

Supprimer le bouton de fermeture de la boîte de dialogue jQueryUI?

32voto

Chetan Sastry Points 14742

Je suppose que vous utilisez l'interface utilisateur jQuery.

Si tel est le cas, joignez un gestionnaire d'événements beforeClose et renvoyez-le false si le bouton Accepter n'a pas été cliqué. Vous pouvez également utiliser CSS pour définir le bouton X sur {display: none}

 var agreed = false; //has to be global
$("something").dialog({
    buttons: {
        'Apply': function () {
            agreed = true;
            $(this).dialog("close");
        }
    },
    beforeClose: function () {
        return agreed;
    }
});
 

11voto

SLaks Points 391154

Si votre boîte de dialogue est régulier, une fenêtre pop-up, il n'est pas possible d'empêcher l'utilisateur de la fermeture de la fenêtre.

Vous pouvez utiliser une boîte de dialogue modale jQuery plugin, comme jqModal.

Notez, cependant, que vous ne pouvez pas empêcher l'utilisateur de fermeture de la fenêtre principale soit.


EDIT: Si vous utilisez l'INTERFACE utilisateur de jQuery boîte de dialogue, vous pouvez ajouter la règle CSS suivante:

#someId .ui-dialog-titlebar-close {
    display: none;
}

Vous shouldalso définir l' closeOnEscape de false.


Aussi, pourquoi êtes-vous forçant l'utilisateur à cliquer sur I Agree?
Pourquoi ne pouvez-vous pas traiter une fenêtre fermée, comme si le vous en désaccord?

2voto

bprotas Points 58

Aussi loin que votre tâche de interdisez l'utilisateur de cliquer sur le X, je vous recommande l'un des quelques approches:

  1. utiliser une règle CSS pour régler l'affichage pour que le bouton "aucun". À l'aide de Firebug Inspecter mode, vous devriez être en mesure de regarder l'étiquette que le jQuery UI dialog endroits-là, et ajouter une règle CSS pour elle. Si c'est de l'affichage en est pas, l'utilisateur ne devrait pas pouvoir cliquer dessus.
  2. De même, joindre un jQuery .événement click() qui ne fait rien et renvoie false pour stopper la propagation de l'évènement (je n'ai jamais fait cela, mais il devrait fonctionner).
  3. Vous pouvez associer une fonction à la boîte de dialogue beforeClose() de l'événement qui vous permettra de prévenir la boîte de dialogue de fermeture si l'utilisateur n'a pas cliqué sur "j'accepte"
  4. Le plus compliqué de tous, mais utile si vous voulez avoir les mêmes dialogues ou de faire d'autres modifications fonctionnelles, vous pouvez créer des sous-classes de jQuery UI dialogue par la création d'un plugin jQuery UI en interne instancie la boîte de dialogue, puis modifie le comportement par défaut par l'application de règles CSS ou d'attacher des événements décrits ci-dessus.

Espérons que l'un d'eux est que vous allez dans la bonne direction...

2voto

Jeff Points 31

J'ai remarqué que le div créé pour la barre de titre de la boîte de dialogue a un attribut aria-labelledby qui référence votre boîte de dialogue (ui-dialog-title- {yourDialogName}), donc j'ai juste caché le "x" avec le CSS suivant:

 div.ui-dialog[aria-labelledby="ui-dialog-title-myDialog"] a.ui-dialog-titlebar-close {
    display: none;
} 

J'ai également défini closeOnEscape sur false pour éviter cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X