J'utilise le modal Twitter Bootstrap comme fenêtre d'assistant et je voudrais empêcher l'utilisateur de le fermer lorsqu'il clique en dehors du modal ou lorsqu'il appuie sur échap. Au lieu de cela, je veux qu'il soit fermé lorsque l'utilisateur appuie sur le bouton d'arrivée. Comment pourrais-je réaliser ce scénario?
Si vous utilisez JavaScript, alors:
$('#myModal').modal({
backdrop: 'static',
keyboard: false
})
et si HTML:
<a data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false" href="#">
Fonctionne aussi, data-backdrop="static"
à cliquer et data-keyboard="false"
à Esc dans votre modal div:
<div id="idModal" class="modal hide" data-backdrop="static" data-keyboard="false">
Vous pouvez également utiliser Direct en mode bootstrap.
<div class="modal fade" id="myModal" data-keyboard="false" data-backdrop="static">
Ajoutez simplement les attributs
data-backdrop="static"
etdata-keyboard="false"
à ce modal.
Par exemple.
<a data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false" href="#">
Vous pouvez utiliser le code ci-dessous
$.fn.modal.prototype.constructor.Constructor.DEFAULTS.backdrop = 'static';
pour changer le comportement par défaut.
J'utilise ces attributs et ça marche, data-keyboard="false" data-backdrop="static"
jQuery('#modal_ajax').modal('show', {backdrop: 'static', keyboard: false});
<button class="btn btn-primary btn-lg" data-backdrop="static" data-keyboard="false" data-target="#myModal" data-toggle="modal">
Ce code empêche la fermeture modale si vous cliquez en dehors de modal.
$(document).ready(function () {
$('#myModal').modal({
backdrop: 'static',
keyboard: false
})
})
Si vous avez besoin de désactiver en cliquant à l'extérieur mais d'activer en appuyant sur Échap
$ ('# myModal'). modal ({ backdrop: 'static', // Ceci est désactivé pour un événement extérieur au clic keyboard: true // pour un événement clavier })
Le script suivant a fonctionné pour moi:
// prevent event when the modal is about to hide
$('#myModal').on('hide.bs.modal', function (e) {
e.preventDefault();
e.stopPropagation();
return false;
});
Vous devriez utiliser backdrop static, false sur le clavier. et peut utiliser le bouton de fermeture en utilisant jQuery ou peut supprimer du HTML modal. J'espère que cette aide.
$('#MyModal').modal({ backdrop: 'static', keyboard: false });
$('#MyModal .close').css('display','none');
Votre code fonctionne lorsque je clique à côté du modal, mais si j'utilise le champ html input
dans modal-body, puis placez le curseur sur cette entrée, puis appuyez sur la touche esc
, le modal étant fermé . Cliquez ici
Si vous devez configurer ceci après que le modal soit affiché, vous pouvez utiliser la solution @Nabid. Cependant, vous devez parfois autoriser la méthode some à fermer le modal. En supposant que vous ayez un bouton avec la classe really-close-the-modal
, qui devrait vraiment fermer le modal, vous pouvez utiliser ce code (jquery):
var closeButtonClicked = false;
$('.really-close-the-modal').on('click', function () {
closeButtonClicked = true;
});
$('#myModal').on('hide.bs.modal', function (e) {
if (!closeButtonClicked) {
e.preventDefault();
e.stopPropagation();
return false;
}
closeButtonClicked = false;
});
Ce n’est pas vraiment une bonne conception de code, mais cela m’a aidé dans une situation où le modal était présenté avec une animation de chargeur, jusqu’à ce qu’une demande ajax soit renvoyée, et c’est seulement à ce moment-là que je pourrais savoir si le modal devait être configuré pour éviter les réponses "implicites". fermeture. Vous pouvez utiliser une conception similaire pour empêcher la fermeture du modal pendant son chargement.
<div class="modal show">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
je pense que ce code peut vous aider empêcher la fermeture modale des fichiers css et bootstrap
<button class='btn btn-danger fa fa-trash' data-toggle='modal' data-target='#deleteModal' data-backdrop='static' data-keyboard='false'></button>
ajoutez simplement l'attribut data-backdrop et data-keyboard à votre bouton sur lequel le modèle est ouvert.