Estou tentando obter o texto em uma caixa de texto conforme o usuário digita ( playground jsfiddle ):
function edValueKeyPress() {
var edValue = document.getElementById("edValue");
var s = edValue.value;
var lblValue = document.getElementById("lblValue");
lblValue.innerText = "The text box contains: " + s;
//var s = $("#edValue").val();
//$("#lblValue").text(s);
}
<input id="edValue" type="text" onKeyPress="edValueKeyPress()"><br>
<span id="lblValue">The text box contains: </span>
O código é executado sem erros, exceto que o valor da input text
caixa, durante onKeyPress
é sempre o valor antes da alteração:
Pergunta : Como obtenho o texto de uma caixa de texto durante
onKeyPress
?
Bônus de bate-papo
Existem três eventos relacionados a "o usuário está digitando" no HTML DOM:
onKeyDown
onKeyPress
onKeyUp
No Windows , a ordem das WM_Key
mensagens torna-se importante quando o usuário mantém uma tecla pressionada e a tecla começa a se repetir:
WM_KEYDOWN('a')
- o usuário pressionou a AteclaWM_CHAR('a')
- uma
caractere foi recebido do usuárioWM_CHAR('a')
- uma
caractere foi recebido do usuárioWM_CHAR('a')
- uma
caractere foi recebido do usuárioWM_CHAR('a')
- uma
caractere foi recebido do usuárioWM_CHAR('a')
- uma
caractere foi recebido do usuárioWM_KEYUP('a')
- o usuário liberou a Achave
Resultará em cinco caracteres aparecendo em um controle de texto: aaaaa
O importante é que você responda à WM_CHAR
mensagem, aquela que se repete. Caso contrário, você perderá eventos quando uma tecla for pressionada.
Em HTML, as coisas são ligeiramente diferentes:
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyUp
Html entrega um KeyDown
e KeyPress
cada repetição de tecla. E o KeyUp
evento só é gerado quando o usuário libera a tecla.
Aprendizado
- I pode responder a
onKeyDown
ouonKeyPress
, mas ambos ainda são levantadas antes dainput.value
foi atualizado - Não posso responder
onKeyUp
, porque isso não acontece quando o texto na caixa de texto muda.
Pergunta: Como obtenho o texto de uma caixa de texto durante onKeyPress
?