Eu gostaria de criar uma função simples que adiciona texto a uma área de texto na posição do cursor do usuário. Precisa ser uma função limpa. Apenas o básico. Eu posso descobrir o resto.
javascript
textarea
JoshMWilliams
fonte
fonte
Respostas:
fonte
} else {
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
selectionStart
é um valor numérico e, portanto, deve ser comparado0
e não'0'
, e provavelmente deve ser usado #===
Este trecho pode ajudá-lo em algumas linhas do jQuery 1.9+: http://jsfiddle.net/4MBUG/2/
fonte
Por uma questão de Javascript adequado
fonte
this.value = ...
. Existe uma maneira de preservá-lo?Nova resposta:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setRangeText
Não tenho certeza sobre o suporte do navegador para isso.
Resposta antiga:
Uma modificação JS pura da resposta de Erik Pukinskis:
Se você deseja alterar o valor do texto selecionado no momento enquanto digita no mesmo campo (para um efeito de preenchimento automático ou similar), passe
document.activeElement
como o primeiro parâmetro.Não é a maneira mais elegante de fazer isso, mas é bem simples.
Exemplos de usos:
fonte
Version 54.0.2813.0 canary (64-bit)
Chrome Canary 54.0.2813.0. Por fim, se você deseja inserir na caixa de texto por ID, usedocument.getElementById('insertyourIDhere')
no lugar deel
na funçãoErik Pukinskis
. Vou atualizar a resposta para refletir melhor isso.Uma solução simples que funciona no Firefox, Chrome, Opera, Safari e Edge, mas provavelmente não funcionará em navegadores IE antigos.
setRangeText
A função permite substituir a seleção atual pelo texto fornecido ou, se não houver seleção, insira o texto na posição do cursor. É suportado apenas pelo firefox, tanto quanto eu sei.Para outros navegadores, existe o comando "insertText", que afeta apenas o elemento html atualmente focado e tem o mesmo comportamento que
setRangeText
Inspirado parcialmente por este artigo
fonte
execCommand
porque ele suportaundo
e faz insert-text-textarea . No IE support, mas menorexecCommand
é considerado obsoleto pelo MDN: developer.mozilla.org/en-US/docs/Web/API/Document/execCommand Não sei por que, parece ser realmente útil!A resposta de Rab funciona muito bem, mas não para o Microsoft Edge, então adicionei uma pequena adaptação para o Edge:
https://jsfiddle.net/et9borp4/
fonte
Eu gosto de javascript simples e geralmente tenho jQuery por perto. Aqui está o que eu criei , baseado no mparkuk's :
Aqui está uma demonstração: http://codepen.io/erikpukinskis/pen/EjaaMY?editors=101
fonte