O que é uma solução Vanilla JS ou jQuery que seleciona todo o conteúdo de uma caixa de texto quando ela recebe o foco?
javascript
jquery
user-interface
Jon Erickson
fonte
fonte
Respostas:
fonte
fonte
onmouseup="return false;"
se você deseja que o usuário possa selecionar e editar livremente o texto depois de focar dentro da caixa de texto. Com esse código, o texto será bloqueado em uma situação "selecionar tudo" e o usuário não poderá editá-lo, a menos que o usuário digite um novo texto ou use as teclas de seta para se mover. Honestamente, isso parece um comportamento muito estranho e não faria sentido, a menos que a caixa de texto se destine a ser permanentemente não editável (e, portanto, desativada).onmouseup="return false;"
se simplesmente deseja que a seleção ocorra quando o usuário clica ou guia pela primeira vez . E +1 para o javascript de baunilha!fonte
fonte
mouseup
evento: "quando o cursor estiver no campo, clicar em algum lugar dentro do texto selecionado para posicionar o cursor não funcionará; os cliques serão efetivamente desativados. situações em que a seleção de todo o texto em foco é desejável, é provavelmente o menor dos dois males ".O jQuery não é JavaScript, o que é mais fácil de usar em alguns casos.
Veja este exemplo:
Fonte: Truques CSS , MDN
fonte
Este não é apenas um problema do Chrome / Safari, experimentei um comportamento bastante semelhante ao Firefox 18.0.1. O engraçado é que isso não acontece no MSIE! O problema aqui é o primeiro evento de mouseup que força a seleção da seleção do conteúdo de entrada, portanto, ignore a primeira ocorrência.
A abordagem timeOut causa um comportamento estranho e, ao bloquear todos os eventos de mouseup, você não pode remover a seleção clicando novamente no elemento de entrada.
fonte
HTML:
Usando JS:
Usando JQuery:
Usando o React JS:
No respectivo componente dentro da função de renderização -
fonte
onFocus={(e) => e.target.select()}
minha solução é usar um tempo limite. Parece funcionar ok
fonte
Isso também funcionará no iOS:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select
fonte
Eu sei que o código embutido não é muito estiloso, mas não queria colocar isso em um arquivo .js. Funciona sem jQuery!
fonte
As respostas aqui me ajudaram até certo ponto, mas tive um problema nos campos de entrada do número HTML5 ao clicar nos botões para cima / para baixo no Chrome.
Se você clicar em um dos botões e deixar o mouse sobre o botão, o número continuará sendo alterado, como se você estivesse segurando o botão do mouse porque o mouse estava sendo jogado fora.
Resolvi isso removendo o manipulador de mouseup assim que foi acionado, como abaixo:
Espero que isso ajude as pessoas no futuro ...
fonte
mouseup
aos campos de entrada de texto e não anumber
s. Este problema não deve vir, portantoIsso vai funcionar, tente isso -
Funciona no Safari / IE 9 e Chrome, mas não tive a chance de testar no Firefox.
fonte
Eu sei que já existem muitas respostas aqui - mas esta falta até agora; uma solução que também funciona com conteúdo gerado pelo ajax:
fonte
Consegui melhorar um pouco a resposta de Zach incorporando algumas chamadas de função. O problema com essa resposta é que ela desativa o onMouseUp completamente, impedindo que você clique na caixa de texto quando o foco estiver em foco.
Aqui está o meu código:
Esta é uma pequena melhoria em relação à resposta de Zach. Funciona perfeitamente no IE, não funciona no Chrome e funciona com sucesso alternado no FireFox (literalmente, outras vezes). Se alguém tiver uma idéia de como fazê-lo funcionar de maneira confiável no FF ou no Chrome, compartilhe.
Enfim, achei que compartilharia o que pudesse para tornar isso um pouco melhor.
fonte
onMouseUp=""
eonMouseDown=""
não são o padrão w3 correto. Eles deveriam seronmouseup=""
eonmousedown=""
. Como em outros atributos html, eles devem ser escritos em letras minúsculas e não em camel.Como @Travis e @Mari, eu queria selecionar automaticamente quando o usuário clicava, o que significa impedir o comportamento padrão de um
mouseup
evento, mas não impedir que o usuário clique ao redor. A solução que eu encontrei, que funciona no IE11, Chrome 45, Opera 32 e Firefox 29 (esses são os navegadores que eu instalei atualmente), é baseada na sequência de eventos envolvidos em um clique do mouse.Quando você clica em uma entrada de texto que não tem foco, você obtém estes eventos (entre outros):
mousedown
: Em resposta ao seu clique. O tratamento padrão aumenta,focus
se necessário, e define o início da seleção.focus
: Como parte do tratamento padrão demousedown
.mouseup
: A conclusão do seu clique, cujo tratamento padrão definirá o final da seleção.Quando você clica em uma entrada de texto que já possui foco, o
focus
evento é ignorado. Como o @Travis e o @Mari notaram astutamente, o tratamento padrão dasmouseup
necessidades só deve ser evitado se ofocus
evento ocorrer. No entanto, como não háfocus
evento "não aconteceu", precisamos inferir isso, o que podemos fazer nomousedown
manipulador.A solução da @ Mari exige que o jQuery seja importado, o que eu quero evitar. A solução da @ Travis faz isso inspecionando
document.activeElement
. Não sei por que exatamente a solução dele não funciona nos navegadores, mas há outra maneira de rastrear se a entrada de texto tem foco: basta seguir seus eventosfocus
eblur
.Aqui está o código que funciona para mim:
Espero que isso ajude alguém. :-)
fonte
fonte
Você só precisa adicionar o seguinte atributo:
Por exemplo:
(Honestamente, eu não tenho idéia do por que você precisaria de mais alguma coisa.)
fonte
Isso funcionou para mim (postando uma vez que não está em respostas, mas em um comentário)
fonte
Edit: Por solicitação do @ DavidG, não posso fornecer detalhes porque não sei por que isso funciona, mas acredito que tenha algo a ver com o evento de foco propagado para cima ou para baixo ou o que quer que ele faça e o elemento de entrada recebendo a notificação recebeu foco. Definir o tempo limite dá ao elemento um momento para perceber que ele foi feito.
fonte
Se você encadear os eventos, acredito que elimina a necessidade de usar
.one
como sugerido em outras partes deste segmento.Exemplo:
fonte
Nota: Se você estiver programando no ASP.NET, poderá executar o script usando ScriptManager.RegisterStartupScript em C #:
Ou apenas digite o script na página HTML sugerida nas outras respostas.
fonte
Semeio este aqui em algum lugar, funciona perfeitamente!
fonte
Estou meio atrasado para a festa, mas isso funciona perfeitamente no IE11, Chrome, Firefox, sem bagunçar o mouse (e sem o JQuery).
fonte
focus
por tabulações para o campo, você vai encontrar vários ouvintes de eventos mouseup anexando ...Minha solução é a próxima:
Portanto, o mouse funcionará normalmente, mas não será desmarcado após o foco ser inserido
fonte