Я загружаю модальный динамический загрузчик, и он содержит несколько текстовых полей. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы курсор фокусировался на первом вводе в этом модальном окне, а по умолчанию этого не происходит.
Итак, я написал этот код, чтобы сделать это:
$('#modalContainer').on('show', function () {
$('input:text:visible:first').focus();
});
Но теперь он на мгновение фокусируется на вводе, а затем автоматически исчезает, почему это происходит и как решить?
jquery
twitter-bootstrap
Амр Элгархи
источник
источник
setTimeout(function() { /* Your code */ }, 100);
Ответы:
@scumah имеет для вас ответ: бутстрап Twitter - сосредоточьтесь на текстовой области внутри модального окна при нажатии
Для Bootstrap 2
Обновление: для Bootstrap 3
========== Обновление ======
В ответ на вопрос вы можете использовать это с несколькими модальными окнами на одной странице, если вы укажете разные целевые данные, переименуете идентификаторы модальных окон, чтобы они соответствовали и обновили идентификаторы полей ввода формы, и, наконец, обновите свой JS для соответствия этим новым ID:
см. Http://jsfiddle.net/panchroma/owtqhpzr/5/
HTML
JS
источник
Я нашел лучший способ сделать это без jQuery.
работает отлично.
Это атрибут html5. Поддерживается всеми основными браузерами.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
источник
<input type="text" class="form-control" placeholder="" autofocus>
@Html.TextBoxFor(m => m.UserName, new { @autofocus="" })
tabdindex="-1"
из своего модального окна, но работает только один раз. Закрытие и повторное открытие не фокусируется.Ответ Дэвида Тайароа правильный, но он не работает, потому что время «исчезновения» модального окна не позволяет вам сосредоточиться на вводе. Вам нужно создать задержку:
источник
<input value="" autofocus>
и на этот раз отлично работал, странноОбычный код (ниже) у меня не работает:
Я нашел решение :
подробнее здесь
источник
Я получил, что бутстрап добавил на свою страницу следующую информацию:
http://getbootstrap.com/javascript/#modals
источник
Это простой код, который лучше всего подойдет вам для всех всплывающих окон с любым полем ввода с фокусировкой на нем.
источник
Я думаю, что наиболее правильный ответ, предполагающий использование jQuery, - это объединение аспектов всех ответов на этой странице, а также использование события, которое проходит Bootstrap:
Она также будет работать изменения
$(document)
в$('.modal')
или добавить класс к модальным , что сигналы , что основное внимание должно произойти, как$('.modal.focus-on-first-input')
источник
попробуйте этот код, он может сработать для вас
источник
$(this).find('input:text').first().focus()
Первый шаг, вы должны установить свой
autofocus
атрибут при вводе формы.И затем вам нужно добавить объявление, чтобы установить автофокус вашего ввода после отображения вашего модального окна.
Попробуйте этот код:
источник
Если вы хотите просто автоматически сфокусировать любое открытое модальное окно, вы можете добавить в свои шаблоны или функции библиотеки этот фрагмент, который будет фокусироваться на первом вводе:
источник
Если вы ищете фрагмент, который будет работать для всех ваших модальных окон, и автоматически искать первый входной текст в открытом, вам следует использовать это:
Если ваш модальный файл загружается с использованием ajax, используйте вместо этого:
источник
это самое общее решение
источник
Попробуйте удалить свойство tabIndex модального окна , когда ваше поле ввода / текстовое поле открыто. Верните его к тому, что когда-либо было , когда вы закрываете ввод / текстовое поле. Это решит проблему независимо от версии начальной загрузки и без ущерба для взаимодействия с пользователем .
источник
Согласно документам Bootstrap 4:
Например:
Ссылка .
источник
Используйте автофокус для поиска нужного элемента формы:
источник
"#Button" вызывает модальную форму,
"#mymodal" - модальная форма,
"#myinput" - это ввод, на котором вы хотите сфокусироваться
источник