Algumas das respostas aqui sugerem o uso setTimeoutpara atrasar o processo de foco no elemento de destino. Um deles menciona que o alvo está dentro de um diálogo modal. Não posso comentar mais sobre a correção da setTimeoutsolução sem conhecer os detalhes específicos de onde ela foi usada. No entanto, pensei em fornecer uma resposta aqui para ajudar as pessoas que se deparam com esse segmento, assim como eu fiz
O simples fato da questão é que você não pode se concentrar em um elemento que ainda não é visível . Se você enfrentar esse problema, verifique se o alvo está realmente visível quando é feita a tentativa de focalizá-lo. No meu próprio caso, eu estava fazendo algo nesse sentido
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
Isso não funcionou. Eu só percebi o que estava acontecendo quando eu executado $ ( '# elementID'). Focus () `a partir do console, que fez o trabalho. A diferença - no meu código acima do destino, não há certeza de que o destino será visível, pois a animação pode não estar completa . E aí está a pista
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
funciona exatamente como esperado. Eu também tinha inicialmente colocado uma setTimeoutsolução e funcionou também. No entanto, um tempo limite escolhido arbitrariamente é obrigado a interromper a solução mais cedo ou mais tarde, dependendo da velocidade com que o dispositivo host realiza o processo de garantir que o elemento de destino esteja visível.