Как установить фокус на первый ввод текста в модальном режиме начальной загрузки после показа
я загружаю динамический модальный загрузчик, и он содержит несколько текстовых входов. Проблема, с которой я сталкиваюсь, что я хочу, чтобы курсор фокусировался на первом входе в этом модальном режиме, и это не происходит по умолчанию.
Поэтому я написал этот код, чтобы сделать это:
$('#modalContainer').on('show', function () {
$('input:text:visible:first').focus();
});
но теперь он фокусируется на входе на мгновение, а затем автоматически уходит, почему это происходит и как решить?
11 ответов:
@scumah имеет ответ для вас:Twitter bootstrap-фокус на textarea внутри модального по клику
Для Bootstrap 2
modal.$el.on('shown', function () { $('input:text:visible:first', this).focus(); });Обновление: Для Bootstrap 3
$('#myModal').on('shown.bs.modal', function () { $('#textareaID').focus(); })========== обновление ======
в ответ на вопрос вы можете использовать это с несколькими модалами на одной странице, если вы укажете разные цели данных, переименуете свои идентификаторы модалов в соответствии и обновите идентификаторы полей ввода формы и, наконец, обновите ваш JS, чтобы соответствовать этим новым идентификаторам:
смотрите http://jsfiddle.net/panchroma/owtqhpzr/5/HTML
... <button ... data-target="#myModal1"> ... </button> ... <!-- Modal 1 --> <div class="modal fade" id="myModal1" ...> ... <div class="modal-body"> <textarea id="textareaID1" ...></textarea></div>JS
$('#myModal1').on('shown.bs.modal', function() { $('#textareaID1').focus(); })
Я нашел лучший способ сделать это, без jQuery.
<input value="" autofocus>работает отлично.
это атрибут html5. Поддерживается всеми основными browsers.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
ответ Дэвида Тайароа правильный, но не работает, потому что время "затухания" модального не позволяет вам сосредоточиться на вводе. Вам нужно создать задержку:
$('#myModal').on('shown.bs.modal', function () { ... setTimeout(function (){ $('#textareaID').focus(); }, 1000); })
обычный код (ниже) не работать на меня:
$('#myModal').on('shown.bs.modal', function () { $('#myInput').focus() })нашел решение:
$('body').on('shown.bs.modal', '#myModal', function () { $('input:visible:enabled:first', this).focus(); })посмотреть подробнее здесь
Я получил, что bootstrap добавил следующую информацию на своей странице:
из-за того, как HTML5 определяет свою семантику, атрибут HTML autofocus не имеет никакого эффекта в Bootstrap модальности. Для достижения такого же эффекта, используйте некоторые пользовательские JavaScript:
$('#myModal').on('shown.bs.modal', function () { $('#myInput').focus() })
Это простой код, который будет работать для вас лучше всего на всех всплывающих окон, которые имеют любое поле ввода с фокусировкой его
$(".modal").on('shown.bs.modal', function () { $(this).find("input:visible:first").focus(); });
Я думаю, что наиболее правильным ответом, предполагающим использование jQuery, является консолидация аспектов всех ответов на этой странице, а также использование события, которое проходит Bootstrap:
$(document).on('shown.bs.modal', function(e) { $('input:visible:enabled:first', e.target).focus(); });Он также будет работать изменение
$(document)to$('.modal')или добавить класс к модальному, который сигнализирует, что этот фокус должен произойти, например$('.modal.focus-on-first-input')
Если вы хотите просто автофокус любой модальный, который был открыт, вы можете поместить в вас шаблоны или функции lib этот фрагмент, который будет сосредоточен на первом входе:
$('.modal').on('shown.bs.modal', function () { $(this).find('input:first').focus(); })
первый шаг, вы должны установить
autofocusатрибут на входе формы.<input name="full_name" autofocus/>И затем вы должны добавить объявление, чтобы установить автофокус вашего ввода после того, как ваш модальный отображается.
Попробуйте этот код :$(document).on('ready', function(){ // Set modal form input to autofocus when autofocus attribute is set $('.modal').on('shown.bs.modal', function () { $(this).find($.attr('autofocus')).focus(); }); });
$(document).ready(function() { $("#button").click(function() { $('#mymodal').on('shown.bs.modal', function() { $('#myinput').focus(); }) }); });
Это" # кнопка", которая вызывает модальную форму,
"#mymodal " - это модальная форма,
"#myinput " - это вход, который вы хотите получить focus
Comments