No permitir que se cierre la ventana modal de Twitter Bootstrap
Estoy creando una ventana modal usando Twitter Bootstrap. El comportamiento predeterminado es que si hace clic fuera del área modal, el modal se cerrará automáticamente. Me gustaría desactivar eso not es decir, no cerrar la ventana modal al hacer clic fuera del modal.
¿Puede alguien compartir código jQuery para hacer esto?
18 answers
Creo que desea establecer el valor backdropa static. Si desea evitar que la ventana se cierre al usar la tecla Esc , debe establecer otro valor.
Ejemplo:
<a data-controls-modal="your_div_id"
data-backdrop="static"
data-keyboard="false"
href="#">
O si está utilizando JavaScript:
$('#myModal').modal({
backdrop: 'static',
keyboard: false
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-29 18:34:00
Simplemente establezca la propiedad backdrop
en 'static'
.
$('#myModal').modal({
backdrop: 'static',
keyboard: true
})
Es posible que también desee establecer la propiedad keyboard
en false
porque eso evita que el modal se cierre presionando la tecla Esc en el teclado.
$('#myModal').modal({
backdrop: 'static',
keyboard: false
})
myModal
es el ID del div que contiene tu contenido modal.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-09 07:42:12
También puede incluir estos atributos en la propia definición modal:
<div class="modal hide fade" data-keyboard="false" data-backdrop="static">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 03:34:08
Si ya ha inicializado la ventana modal, es posible que desee restablecer las opciones con $('#myModal').removeData("modal").modal({backdrop: 'static', keyboard: false})
para asegurarse de que se aplicarán las nuevas opciones.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-29 18:47:48
Anula el evento 'hide' de Bootstrap del Diálogo y detiene su comportamiento predeterminado (para eliminar el diálogo).
Por favor, consulte el siguiente fragmento de código:
$('#yourDialogID').on('hide.bs.modal', function(e) {
e.preventDefault();
});
Funciona bien en nuestro caso.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-29 18:58:56
Sí, puedes hacerlo así:
<div id="myModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel"
aria-hidden="true"
data-backdrop="static" data-keyboard="false">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-29 18:59:42
Algo así como la respuesta de @AymKdn, pero esto le permitirá cambiar las opciones sin volver a inicializar el modal.
$('#myModal').data('modal').options.keyboard = false;
O si necesita hacer varias opciones, ¡JavaScript with
es útil aquí!
with ($('#myModal').data("modal").options) {
backdrop = 'static';
keyboard = false;
}
Si el modal ya está abierto, estas opciones solo tendrán efecto la próxima vez que se abra el modal.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-29 18:49:22
Solo agrega estas dos cosas
data-backdrop="static"
data-keyboard="false"
Se verá así ahora
<div class="modal fade bs-example-modal-sm" id="myModal" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
Desactivará el botón de escape y también el clic en cualquier lugar y ocultar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-16 17:55:38
Puede deshabilitar el comportamiento de clic para cerrar del fondo y hacer que este sea el predeterminado para todos sus modales agregando este JavaScript a su página (asegúrese de que se ejecute después de que se carguen jQuery y Bootstrap JS):
$(function() {
$.fn.modal.Constructor.DEFAULTS.backdrop = 'static';
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-30 20:05:26
Como dice D3VELOPER, el siguiente código lo resuelve:
$('#modal').removeData('bs.modal').modal({backdrop: 'static', keyboard: false});
Estoy usando jquery & bootstrap y simplemente removeData('modal')
no funciona.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-16 09:01:14
Lo mejor que he encontrado es añadir este código al enlace
<!-- Link -->
<a href="#mdl" role="button" data-backdrop="static" data-keyboard="false" data-toggle="modal" id_team="" ></a>
<-- Div -->
<div id="mdl" class="modal hide fade" tabindex="-1" role="dialog" data-keyboard="false" data-backdrop="static"></div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-02 19:00:30
En caso de que alguien venga aquí desde Google tratando de averiguar cómo evitar que alguien cierre un modal, no olvide que también hay un botón de cierre en la parte superior derecha del modal que debe eliminarse.
Usé algunos CSS para ocultarlo:
#Modal .modal-header button.close {
visibility: hidden;
}
Tenga en cuenta que el uso de "display: none;" se sobrescribe cuando se crea el modal, así que no lo use.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-02 15:27:15
Si desea desactivar condicionalmente la función backdrop click closing
. Puede usar la siguiente línea para establecer la opción backdrop
en static
durante el tiempo de ejecución.
Bootstrap v3.xx
jQuery('#MyModal').data('bs.modal').options.backdrop = 'static';
Bootstrap v2.xx
jQuery('#MyModal').data('modal').options.backdrop = 'static';
Esto evitará un modelo ya instanciado con la opción backdrop
establecida en false
(el comportamiento predeterminado ), desde el cierre.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-18 15:30:53
Puede establecer el comportamiento predeterminado de la ventana emergente modal mediante el uso de la siguiente línea de código:
$.fn.modal.prototype.constructor.Constructor.DEFAULTS.backdrop = 'static';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-16 08:11:17
Hacer eso es muy fácil hoy en día. Basta con añadir:
data-backdrop="static" data-keyboard="false"
En su divisor modal.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-02 19:00:15
Bueno, esta es otra solución que algunos de ustedes podrían estar buscando (como yo estaba..)
Mi problema era similar, el cuadro modal se estaba cerrando mientras el iframe que tenía dentro se estaba cargando, así que tuve que desactivar el despido modal hasta que el Iframe termine de cargarse, y luego volver a habilitar.
Las soluciones presentadas aquí no funcionaban al 100%.
Mi solución fue esta:
showLocationModal = function(loc){
var is_loading = true;
if(is_loading === true) {
is_loading = false;
var $modal = $('#locationModal');
$modal.modal({show:true});
// prevent Modal to close before the iframe is loaded
$modal.on("hide", function (e) {
if(is_loading !== true) {
e.preventDefault();
return false
}
});
// populate Modal
$modal.find('.modal-body iframe').hide().attr('src', location.link).load(function(){
is_loading = true;
});
}};
Así que previno temporalmente que el Modal se cierre con:
$modal.on("hide", function (e) {
if(is_loading !== true) {
e.preventDefault();
return false
}
});
Pero el var is_loading que volverá a habilitar el cierre después de que el Iframe se haya cargado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-13 14:01:43
<button type="button" class="btn btn-info btn-md" id="myBtn3">Static
Modal</button>
<!-- Modal -->
<div class="modal fade" id="myModal3" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Static Backdrop</h4>
</div>
<div class="modal-body">
<p>You cannot click outside of this modal to close it.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-
dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<script>
$("#myBtn3").click(function(){
$("#myModal3").modal({backdrop: "static"});
});
});
</script>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-06 09:49:38
Para Actualizar el estado de fondo en Bootstrap 4.1.3 después de que se haya mostrado el modal, Usamos la siguiente línea del complemento Bootstrap-Modal-Wrapper. Referencia de código del repositorio del plugin.
$("#yourModalElement").data('bs.modal')._config.backdrop = (true : "static");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-04 19:04:26