Подтвердить что ты не робот

Bootstrap modal не отображается

Я скопировал и вставил код примера из бутстрапа twitter, чтобы создать базовое модальное окно в приложении Rails 3.2:

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Modal header</h3>
  </div>
  <div class="modal-body">
    <p>One fine body…</p>
  </div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button class="btn btn-primary">Save changes</button>
  </div>
</div>

<a href= "#myModal"  role="button" class="btn" data-toggle="modal">Launch demo modal</a>

Это не работает. Это не из-за того, что jQuery или скрипты не загружаются, потому что a) ему не нужно загружать js, потому что он использует таргетинг данных, и b) я проверил консоль, и все отлично срабатывает.

Это также не потому, что я включаю в себя как boostrap.js, так и bootstrap-modal.js... Я проверил, а я нет.

Я в недоумении. Он должен просто работать. Другой загрузочный js отлично работает на сайте.

Единственное, что я могу придумать, - это что-то общее с определением классов .hide и .fade - когда я их вынимаю, модальность проявляется хорошо. Когда я их включу, он вообще не появится.

Может ли jQuery UI вмешиваться в него?

Пожалуйста, спросите меня о какой-либо дополнительной информации, которая вам может понадобиться, чтобы помочь мне...

UPDATE:

Итак, я думаю, что вижу проблему, но я не знаю, как ее исправить. Когда я проверяю консоль, наверху я вижу, что

element.style {
display: none;
}

как-то теперь является частью div, поэтому в консоли он выглядит так:

<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;" >

Но я не знаю, почему он добавляет его или откуда. Как я могу отслеживать это?

Спасибо

4b9b3361

Ответ 1

Я выяснил причину.

Просто чтобы дать ему некоторую общую полезность любому, кто придет к этому вопросу. Если вы не можете понять, что неправильно, попробуйте выполнить "поиск всех" для любых классов "модального" "увядания" "затухания" и "скрыть" в любых таблицах стилей в вашем приложении.

У меня был один экземпляр "fade", определенный в случайном файле css, и это то, что останавливало его отображение, поскольку оно было переопределяющим бутстрапом. Как только я удалил ссылку, все было в порядке.

Ответ 2

Если вы обновили Bootstrap 2.3.2 до Bootstrap 3, вам нужно удалить класс 'hide' из любого из ваших модальных div.

Ответ 3

У меня был мой модальный <div> внутри my <li> .... не хорошо.

Наружные работы отлично: -)

<div class="modal fade" id="confirm-logout" tabindex="-1" role="dialog" aria-labelledby="logoutLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel">....</h4>
            </div>

            <div class="modal-body">
                <p>....</p>
            </div>

            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <a class="btn btn-danger btn-ok">OK</a>
            </div>
        </div>
    </div>
</div>
<li>
    .....
</li>

Ответ 4

Если вы используете angular и пытаетесь создать директиву, в которой есть пользовательский модальный код, модальный фон покажет, но сам модальный не будет, если вы не установите replace: true в своей директиве.

Typescript Директива:

export class myModalDirective implements ng.IDirective {
    static Register = () => {
        angular.module('app').directive('myModal', () => { return new myModalDirective () });
    }
    templateUrl = 'mymodal.html'    
restrict = 'E';
    replace = true;
    scope = {
        show: '='
    }
    link = (scope: any, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ctrl: any) => {
        var vm = this;
        scope.$watch(function () { return scope.show; }, function (vis) {
            if (vis) {
                $(element).modal('show');
            } else {
                $(element).modal('hide');
            }
        });

    }
    constructor () {
    }
}

Модальный HTML

<div class="modal fade" data-keyboard="false" data-backdrop="static">
    <div class="modal-dialog">
        <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">Modal Title</h4>
                </div>
                <div class="modal-body">
                </div>
        </div>
    </div>
</div>

Ответ 5

Измените свой код на что-то вроде этого,

<!-- Modal -->
<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Modal header</h3>
  </div>
  <div class="modal-body">
    <p>One fine body…</p>
  </div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button class="btn btn-primary">Save changes</button>
  </div>
</div>

<a class="btn" data-target="#myModel" role="button" data-toggle="modal">Launch demo modal</a>

Ответ 6

У меня была та же проблема, и я понял, что у моего <button> было type="submit" когда Bootstrap заявляет, что это должно быть type="button"

Ответ 7

Как и у Паулы, у меня была та же проблема, мой модал не показывался, и я понял, что моя кнопка была в теге <form>...:

<button class="btn btn-danger" data-toggle="modal" data-target="#deleteItemModal">Delete</button>

Я просто заменил <button> на <a>, и мой модал работал хорошо

<a class="btn btn-danger" data-toggle="modal" data-target="#deleteItemModal">Delete</a>

Ответ 8

Если вы используете Bootstrap 4, это может произойти из-за ".fade: not (.show) {opacity: 0}" в Bootstrap css и ваш модал не имеет класса 'show'. И причина, по которой у него нет класса 'show', может быть из-за того, что ваша страница не загружает файлы JQuery, Popper и Bootstrap Javascript.

(Bootstrap Javascript автоматически добавит класс 'show' в ваш диалог.)

Ссылка: https://getbootstrap.com/docs/4.3/getting-started/introduction/

Ответ 9

Столкнувшись с этим, я с удивлением обнаружил, что ни одно из этих решений не работает, так как это кажется довольно простым, и у меня была похожая разметка, работающая на другой странице.

С моей конфигурацией у меня был существующий код jQuery, связанный с тем же селектором, запускающим модальный режим. После запуска процесса удаления все, что мне нужно было сделать, это закомментировать/удалить e.stopPropagation() в моем существующем скрипте.

Ответ 10

Чтобы мой модал отображался при вызове .modal('show')

Я изменился:

modal.on('loaded.bs.modal', function() 

чтобы:

modal.on('shown.bs.modal', function() {

Ответ 11

Просто чтобы уточнить ответ @jfdimark. Скорее всего, это вызвано тем же именем класса CSS где-то в загруженном CSS. Поэтому вместо того, чтобы определять модальный класс как "модальное затухание", измените его на "модальное затухание" и попробуйте снова.

Ответ 12

  1. Проверьте все файлы js, порядок следует сохранить.
  2. Заказ должен быть сохранен как
    -> jquery.min.js
    -> bootstrap.min.js
    -> any external js files

Ответ 13

Иногда и другие конфликты CSS priority issue. - CSS priority issue.

чтобы проверить, перейдите в ваш модальный класс затухания в браузере, а затем проверьте, есть ли какой-либо пользовательский файл сверху. например .fade:not(.show) где он использовал свою собственную информацию, а не загрузчик. если вы найдете то вы должны изменить его в соответствии с вашими потребностями. Надеюсь это поможет.

Ответ 14

Я только что наткнулся на эту проблему и нашел собственный текст текста таблицы стилей CSS: #ffffff погружает текстовое содержимое, потому что цвет фона модели такой же! то есть .model-content {background-color: #ffffff;} Обязательно переопределите его в своей таблице стилей, добавив следующие .modal-content {color: # 646464! important;}
Может быть, это помогает.

Ответ 15

Вы должны импортировать jquery и bootstrap.min.js.

Добавьте это к angular-cli:

"scripts": ["../node_modules/jquery/dist/jquery.min.js",
        "../node_modules/bootstrap/dist/js/bootstrap.min.js"]

убедитесь, что у вас есть свои папки.