Когда я использую select2 (вход) в модале начальной загрузки, я не могу ничего ввести в него. Это как отключено? Снаружи модал select2 работает нормально.
Рабочий пример: http://jsfiddle.net/byJy8/1/ code:
<!-- 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">Panel</h3>
</div>
<div class="modal-body" style="max-height: 800px">
<form class="form-horizontal">
<!-- Text input-->
<div class="control-group">
<label class="control-label" for="vdn_number">Numer</label>
<div class="controls">
<!-- seleect2 -->
<input name="vdn_number" type="hidden" id="vdn_number" class="input-large" required="" />
</div>
</div>
</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>
и JS:
$("#vdn_number").select2({
placeholder: "00000",
minimumInputLength: 2,
ajax: {
url: "getAjaxData/",
dataType: 'json',
type: "POST",
data: function (term, page) {
return {
q: term, // search term
col: 'vdn'
};
},
results: function (data) { // parse the results into the format expected by Select2.
// since we are using custom formatting functions we do not need to alter remote JSON data
return {results: data};
}
}
});
ответы:
здесь вы можете найти быстрое решение
и вот «правильный путь»: Select2 не работает, когда встраивается в модал начальной загрузки
dropdownParent
не должен быть в корневом div, а должен быть глубже, например, div с classmodal-content
, в противном случае позиции выпадающего меню будут испорчены при прокрутке модального окна.Ответы:
Хорошо, у меня это работает
изменение
в
(убрать tabindex = "- 1" из модального)
источник
Для Select2 v4:
Используется
dropdownParent
для прикрепления выпадающего меню к модальному диалогу, а не к телу HTML.Это прикрепит выпадающий список Select2, чтобы он попадал в DOM модального, а не в тело HTML (по умолчанию). Смотрите https://select2.org/dropdown#dropdown-placement
источник
dropdownParent: $("#myModal")
, а неdropdownParent: "#myModal"
.dropdownParent
корня модального режима, действительно лучше выбрать тело, в противном случае вы получаете очень плохие ошибки позиционирования при прокрутке. Я поставил мой на div с классом,modal-content
и это работает как шарм!Я нашел решение этого на github для select2
https://github.com/ivaynberg/select2/issues/1436
Для начальной загрузки 3 решение:
Bootstrap 4 переименовал
enforceFocus
метод в_enforceFocus
, так что вместо этого вам нужно будет исправить это:Объяснение скопировано по ссылке выше:
источник
$.fn.modal.Constructor.prototype.enforceFocus = $.noop;
Просто удалите
tabindex="-1"
и добавьте стильoverflow:hidden
Вот пример:
источник
Это моё решение с select2 4.0.0. Просто переопределите css прямо под импортом select2.css. Пожалуйста, убедитесь, что z-индекс больше, чем ваш диалог или модальный. Я просто добавляю 2000 по умолчанию. Потому что у моих диалогов z-index около 1000.
источник
bootstrap.css
z-index.popover
установлено значение 1060, так что это исправление также работает. Мне нравится это, потому что это просто, и это решает проблему так же, как проблема была создана: z-index установлен в таблице стилей.Установите dropdownParent. Я должен был установить его на .modal-content в модальном режиме, иначе текст окажется по центру.
источник
.modal-content
Действительно сделать разницу. Спасибо за указание 👍Ответ, который работал для меня, найден здесь: https://github.com/select2/select2-bootstrap-theme/issues/41
Также не требует удаления
tabindex
.источник
Согласно официальной документации select2, эта проблема возникает из-за того, что модальности Bootstrap стремятся украсть фокус у других элементов вне модальных.
По умолчанию Select2 прикрепляет раскрывающееся меню к элементу и считается «за пределами модального».
Вместо этого прикрепите выпадающий список к самому модалу с помощью параметра dropdownParent:
См. Ссылку: https://select2.org/troublesho//monmon-problems.
источник
У меня была такая же проблема, обновление
z-index
для.select2-container
должны сделать трюк. Убедитесь, что вашz-index
модал ниже, чем у select2.Обновлено: в случае, если код выше не работает должным образом, также удалите tabindexes из вашего мода, как предложено @breq
источник
Jus использует этот код в Document.read ()
источник
Эта проблема не подходит для одной функции Jquery
источник
изменить файл select2.css
в
источник
Просто чтобы лучше понять, как элементы tabindex работают, чтобы завершить принятый ответ:
от: сеть разработчиков Mozilla
источник
Если у вас есть проблемы с IPad клавиатуры , которая скрыть в начальной загрузки модальный при нажатии на ВЫБ.2 вход, вы можете решить эту проблему, добавив следующее правило после инициализации
select2
ввода:Взято с https://github.com/angular-ui/bootstrap/issues/1812#issuecomment-135119475
РЕДАКТИРОВАТЬ: Если ваши параметры не отображаются должным образом, вам нужно использовать
dropdownParent
атрибут при инициализацииselect2
:Удачи (:
источник
Основываясь на ответе @pymarco, я написал это решение, оно не идеально, но решает проблему фокуса select2 и поддерживает последовательность вкладок, работающих внутри модальных
источник
В моем случае у меня была та же проблема с двумя модалами, и все было решено с помощью:
Как и в проекте № 41, сказал пользователь.
источник
этот код работает. Спасибо.
источник
Хорошо, я знаю, что опаздываю на вечеринку. Но позвольте мне поделиться с вами тем, что сработало для меня. Решения tabindex и z-index у меня не сработали.
Установка родителя элемента select работала в соответствии с общими проблемами, перечисленными на сайте select2.
источник
Если вы используете jquery mobile popup, вы должны переписать функцию _handleDocumentFocusIn:
источник
У меня та же проблема с
select2
inbootstrap modal
, и решением было удалитьoverflow-y: auto;
иoverflow: hidden
; от.modal-open
и.modal classes
Вот пример использования
jQuery
для удаленияoverflow-y
:источник
у меня была эта проблема раньше, я использую yii2, и я решил ее таким образом
источник
У меня была проблема, связанная с полусвязью в приложении, поэтому я добавлю свой 2c.
У меня есть несколько модальных форм с формами, содержащими виджеты select2. Открытие модала А, затем другого модала внутри модала А, приведет к тому, что виджеты select2 внутри модала Б исчезнут и не смогут инициализироваться.
Каждый из этих модалов загружал формы через ajax.
Решение состояло в том, чтобы удалить формы из DOM при закрытии модальных.
источник
источник
Я решил это вообще в моем проекте, перегрузив
select2
-функцию. Теперь он проверит, нет ли dropdownParent и вызвана ли функция для элемента, у которого есть родительский типdiv.modal
. Если это так, он добавит этот модал в качестве родителя для выпадающего списка.Таким образом, вам не нужно указывать его каждый раз, когда вы создаете select2-input-box.
источник
Я просто работаю, включив select2.min.css
Попробуй
Мой модальный HTML Bootstrap 3 является
источник
Вы можете снова вызвать триггер select2 внутри своего $ (документа)
источник
чтобы использовать начальную загрузку 4.0 со стороны сервера (встроенные данные ajax или json), вам необходимо добавить все это:
и затем, когда модальный режим открыт, создайте select2:
источник
В моем случае я сделал это, и это работает. Я использую пакет, чтобы загрузить его, и в этом случае он работал для меня
источник