Eu carrego um modal de bootstrap dinâmico e contém algumas entradas de texto. O problema que enfrento é que quero que o cursor se concentre na primeira entrada neste modal, e isso não está acontecendo por padrão.
Então, escrevi este código para fazer isso:
$('#modalContainer').on('show', function () {
$('input:text:visible:first').focus();
});
Mas agora ele se concentra na entrada por um momento e depois desaparece automaticamente, por que isso está acontecendo e como resolver?
jquery
twitter-bootstrap
Amr Elgarhy
fonte
fonte
setTimeout(function() { /* Your code */ }, 100);
Respostas:
@scumah tem a resposta para você: Twitter bootstrap - concentre-se na textarea dentro de um modal com um clique
Para Bootstrap 2
Atualização: Para Bootstrap 3
========== Atualizar ======
Em resposta a uma pergunta, você pode usar isso com vários modais na mesma página se especificar diferentes destinos de dados, renomear seus IDs modais para corresponder e atualizar os IDs dos campos de entrada do formulário e, finalmente, atualizar seu JS para corresponder a esses novos IDs:
consulte http://jsfiddle.net/panchroma/owtqhpzr/5/
HTML
JS
fonte
Achei a melhor maneira de fazer isso, sem jQuery.
funciona perfeitamente.
Este é um atributo html5. Suportado por todos os principais navegadores.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
fonte
<input type="text" class="form-control" placeholder="" autofocus>
@Html.TextBoxFor(m => m.UserName, new { @autofocus="" })
tabdindex="-1"
do modal, mas só funciona uma vez. Fechar e reabrir não tem foco.A resposta de David Taiaroa está correta, mas não funciona porque o tempo de "fade in" do modal não permite que você defina o foco na entrada. Você precisa criar um atraso:
fonte
<input value="" autofocus>
e funcionei bem pra mim dessa vez, estranhoO código usual (abaixo) não funciona para mim:
Encontrei a solução :
veja mais aqui
fonte
Recebi que o bootstrap adicionou as seguintes informações na página:
http://getbootstrap.com/javascript/#modals
fonte
Este é o código simples que funcionará melhor para você em todos os pop-ups que tenham qualquer campo de entrada com foco
fonte
Acho que a resposta mais correta, assumindo o uso de jQuery, é uma consolidação de aspectos de todas as respostas desta página, mais o uso do evento que o Bootstrap passa:
Igualmente trabalharia mudando
$(document)
para$('.modal')
ou para adicionar uma classe para o modal que os sinais de que esse foco deve ocorrer, como$('.modal.focus-on-first-input')
fonte
tente este código, pode funcionar para você
fonte
$(this).find('input:text').first().focus()
Primeiro passo, você deve definir seu
autofocus
atributo na entrada do formulário.E então você tem que adicionar uma declaração para definir o foco automático de sua entrada depois que seu modal for mostrado.
Experimente este código:
fonte
Se você deseja focar automaticamente qualquer modal que foi aberto, você pode colocar em seus padrões ou funções lib este trecho que se concentrará na primeira entrada:
fonte
se você estiver procurando por um snippet que funcione para todos os seus modais e procurar automaticamente pelo primeiro texto de entrada no aberto, você deve usar isto:
Se o seu modal for carregado usando ajax, use este:
fonte
esta é a solução mais geral
fonte
Tente remover a propriedade tabIndex do modal , quando sua caixa de entrada / texto estiver aberta. Volte ao que sempre foi , quando você fecha a caixa de entrada / texto. Isso resolveria o problema independentemente da versão do bootstrap e sem comprometer o fluxo de experiência do usuário .
fonte
De acordo com a documentação do Bootstrap 4:
Por exemplo:
Link .
fonte
Use o foco automático para pesquisar o elemento de formulário correto:
fonte
É o "#button" que chama o formulário modal,
"#mymodal" é a forma modal,
"#myinput" é a entrada que você deseja obter foco
fonte