Ładuję dynamiczny modal bootstrap i zawiera kilka danych wejściowych. Problem, z którym się spotykam, polega na tym, że chcę, aby kursor koncentrował się na pierwszym wejściu w tym trybie, a to nie dzieje się domyślnie.
Więc napisałem ten kod, aby to zrobić:
$('#modalContainer').on('show', function () {
$('input:text:visible:first').focus();
});
Ale teraz skupia się przez chwilę na wejściu, a następnie znika automatycznie, dlaczego tak się dzieje i jak rozwiązać?
jquery
twitter-bootstrap
Amr Elgarhy
źródło
źródło
setTimeout(function() { /* Your code */ }, 100);
Odpowiedzi:
@scumah ma dla Ciebie odpowiedź: Twitter bootstrap - skup się na textarea wewnątrz modalu po kliknięciu
Dla Bootstrap 2
Aktualizacja: dla Bootstrap 3
========== Aktualizacja ======
W odpowiedzi na pytanie możesz użyć tego z wieloma modałami na tej samej stronie, jeśli określisz różne cele danych, zmienisz nazwy identyfikatorów modali, aby pasowały i zaktualizowały identyfikatory pól wejściowych formularza, a na koniec zaktualizujesz JS, aby pasował do tych nowych Identyfikatory:
patrz http://jsfiddle.net/panchroma/owtqhpzr/5/
HTML
JS
źródło
Znalazłem najlepszy sposób na zrobienie tego bez jQuery.
działa świetnie.
To jest atrybut HTML5. Obsługiwane przez wszystkie główne przeglądarki.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
źródło
<input type="text" class="form-control" placeholder="" autofocus>
@Html.TextBoxFor(m => m.UserName, new { @autofocus="" })
tabdindex="-1"
z modalu, jednak działa tylko raz. Zamykanie i ponowne otwieranie nie koncentruje się.Odpowiedź Davida Taiaroa jest poprawna, ale nie działa, ponieważ czas na "zanikanie" modalu nie pozwala skupić się na wejściu. Musisz utworzyć opóźnienie:
źródło
<input value="" autofocus>
tym razemZwykły kod (poniżej) nie działa dla mnie:
Znalazłem rozwiązanie :
zobacz więcej tutaj
źródło
Mam, że bootstrap dodał następujące informacje na swojej stronie:
http://getbootstrap.com/javascript/#modals
źródło
To jest prosty kod, który będzie działał najlepiej we wszystkich wyskakujących okienkach, które mają dowolne pole wejściowe z fokusem
źródło
Myślę, że najbardziej poprawną odpowiedzią, zakładając użycie jQuery, jest konsolidacja aspektów wszystkich odpowiedzi na tej stronie, plus użycie zdarzenia, które przechodzi Bootstrap:
To również będzie działać zmienia
$(document)
się$('.modal')
lub dodać klasę do modalnym, że powinno nastąpić to nacisk sygnały, jak$('.modal.focus-on-first-input')
źródło
wypróbuj ten kod, może zadziałać dla Ciebie
źródło
$(this).find('input:text').first().focus()
Najpierw musisz ustawić swój
autofocus
atrybut w formularzu.A potem musisz dodać deklarację, aby ustawić autofokus twojego wejścia po wyświetleniu twojego modalu.
Wypróbuj ten kod:
źródło
Jeśli chcesz po prostu automatycznie ustawić ostrość dowolnego otwartego modalu, możesz umieścić w sobie wzorce lub funkcje lib ten fragment, który skupi się na pierwszym wejściu:
źródło
jeśli szukasz fragmentu, który działałby dla wszystkich twoich modali, i automatycznie wyszukujesz pierwszy tekst wejściowy w otwartym, powinieneś użyć tego:
Jeśli twój modal jest ładowany przy użyciu Ajax, użyj tego zamiast tego:
źródło
jest to najbardziej ogólne rozwiązanie
źródło
Spróbuj usunąć właściwość tabIndex modalu , gdy twoje pole wejściowe / tekstowe jest otwarte. Po zamknięciu pola wprowadzania / pola tekstowego ustaw go z powrotem na to, co kiedykolwiek było . To rozwiązałoby problem niezależnie od wersji bootstrap i bez uszczerbku dla przepływu doświadczenia użytkownika .
źródło
Według dokumentacji Bootstrap 4:
Na przykład:
Link .
źródło
Użyj autofokusa, aby wyszukać odpowiedni element formularza:
źródło
To „#button” wywołuje formularz modalny,
„#mymodal” to forma modalna,
„#myinput” to wejście, na którym chcesz się skupić
źródło