Zapobiec zniknięciu modalu Bootstrap podczas klikania na zewnątrz lub naciskania escape?

Używam modalu Twitter Bootstrap jako okna kreatora i chciałbym, aby użytkownik nie zamknął go po kliknięciu poza modalem lub po naciśnięciu escape. Zamiast tego chcę, aby została zamknięta, gdy użytkownik naciśnie przycisk Zakończ. Jak mogę osiągnąć ten scenariusz?

Author: Kasaku, 2013-04-22

13 answers

If using JavaScript then:

$('#myModal').modal({
    backdrop: 'static',
    keyboard: false
})

I jeśli HTML:

<a data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false" href="#">
 681
Author: Ehsan Zargar Ershadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-05 12:01:07

Działa również, data-backdrop="static" aby kliknąć i data-keyboard="false" aby Esc w modalu div:

<div id="idModal" class="modal hide" data-backdrop="static" data-keyboard="false">
 193
Author: CesarMiguel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-07 16:07:12

Wystarczy dodać data-backdrop="static" i data-keyboard="false" atrybuty do tego modalu.

Np.

<a data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false" href="#">
 35
Author: Ganesh Putta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 07:27:16

Możesz również użyć Direct w modelu bootstrap.

<div class="modal fade" id="myModal" data-keyboard="false" data-backdrop="static">
 23
Author: tarun chotia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-12 10:11:16

Możesz użyć poniższego kodu

$.fn.modal.prototype.constructor.Constructor.DEFAULTS.backdrop = 'static';

Aby zmienić domyślne zachowanie.

 21
Author: Rafael Keller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-19 21:12:05
jQuery('#modal_ajax').modal('show', {backdrop: 'static', keyboard: false});
 14
Author: Selva Balaji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-01 06:35:09

Używam tych atrybutów i działa, data-keyboard="false" data-backdrop="static"

 14
Author: Arsalan Ahmed Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-04 20:08:22
<button class="btn btn-primary btn-lg" data-backdrop="static" data-keyboard="false" data-target="#myModal" data-toggle="modal">
 9
Author: Ramesh kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-26 06:14:18

Jeśli trzeba wyłączyć klikanie na zewnątrz, ale włączyć naciśnięcie escape

$('#myModal').modal({
    backdrop: 'static',   // This disable for click outside event
    keyboard: true        // This for keyboard event
})
 5
Author: HoangLong85,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-04 04:56:07

Zadziałał dla mnie następujący skrypt:

// prevent event when the modal is about to hide
$('#myModal').on('hide.bs.modal', function (e) {
    e.preventDefault();
    e.stopPropagation();
    return false;
});
 4
Author: Nabid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-15 23:16:10

Twój kod działa, gdy klikam na modal, ale jeśli używam html input pole wewnątrz modal-body następnie skoncentruj kursor na tym wejściu, a następnie naciśnij esc Klucz modalny został zamknięty. Kliknij tutaj

 1
Author: Marudhu Raj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-13 06:23:47
<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&hellip;</p>
  </div>

  </div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->

Myślę, że ten codepen może Ci pomóc prevent modal close css and bootstrap

 0
Author: shubhangi singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-22 07:36:07

Jeśli chcesz skonfigurować to Po wyświetleniu modal, możesz użyć @nabid solution. Jednak czasami nadal musisz zezwolić na jakąś metodę , aby zamknąć modal. Zakładając, że masz przycisk z klasą really-close-the-modal, który powinien naprawdę zamknąć modal, możesz użyć tego kodu (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;
});

To nie jest naprawdę ładny projekt kodu, ale pomógł mi w sytuacji, gdy modal został pokazany z animacją loadera, dopóki nie powróciło żądanie ajax i dopiero wtedy mogłem wiedzieć, czy modal musiał być skonfigurowany, aby zapobiec" niejawnemu " zamknięciu. Możesz użyć podobnej konstrukcji, aby zapobiec zamknięciu modalu podczas jego ładowania.

 0
Author: youen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 08:36:42