Bootstrap Модал не работает с версией 4.4.1 - PullRequest
1 голос
/ 19 января 2020

У меня нормальный модальный диалог. Он работал с Bootstrap Версия 4.1.0. Сейчас я обновился до версии 4.4.1, и она больше не работает. Это почему? Я думаю, что нет никаких различий между обеими версиями относительно модальных диалогов.

<div class="modal fade" id="1" tabindex="-1" role="dialog" aria-labelledby="modalLabel_1" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <form action="update" method="POST">
                <div class="modal-header">
                    <h5 class="modal-title" id="modalLabel_1">Edit</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">×</span>
                    </button>
                </div>
                <div class="modal-body">
                    Test

                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Schließen</button>
                    <button type="submit" class="btn btn-primary">Speichern</button>
                </div>
            </form>
        </div>
    </div>
</div>

<button type="button" class="btn btn-primary float-right" data-toggle="modal" data-target="#1">
    Open Modal
</button>

Найдите здесь Bootstrap версии:

Обновление 1:

Работают следующие временные решения:

    $('button[data-toggle=modal]').click(function(){      
      $(".modal").modal();
    });

1 Ответ

1 голос
/ 19 января 2020

Это связано с тем, что ваш модальный id является цифрой c. Если вы изменяете модальное значение id на _1, а значение кнопки data-target на #_1, то начинает работать .


Если разобраться в этой проблеме, в вашем примере

document.getElementById('1')

... возвращает модальное значение, но

document.querySelector('#1')

... возвращает ошибку:

Uncaught DOMException: Failed to execute 'querySelector' on 'Document': '#1' is not a valid selector.

Я предполагаю, что внутренне Bootstrap использует querySelector, передавая атрибут data-target вашей кнопки. Однако, поскольку ошибки не отображаются, я предполагаю, что все это происходит в блоке try / catch. Хотя я могу ошибаться, я просто размышляю.


... и, , глядя еще дальше в вопросе выясняется, что селекторы, начинающиеся с цифр , технически действительны , но требуют дальнейшей обработки. А именно, ваш атрибут <button> s data-target должен быть data-target="#\31" или data-target="#\000031", если вы действительно хотите использовать числовые идентификаторы c.

См. Это работает .

И это даже не Bootstrap Speci c, это то, как работают селекторы DOM:

#\31 { color: red; }
.\32 { color: blue; }
<span id="1">red</span>
<span class="2">blue</span>

Еще одна вещь (не связанная напрямую): вам не хватает требуемого popper.js импорта (см. Quickstart ). Это требуется для всплывающих окон, всплывающих подсказок и т. П., Которые помещают их непосредственно в <body>, но располагают их правильно, как если бы они были дочерними элементами элемента, находящегося в центре, так что всплывающее окно может переполнить родителей с помощью overflow: hidden. Как правило, вы хотите включить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...