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 textcaixa, 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:
onKeyDownonKeyPressonKeyUp
No Windows , a ordem das WM_Keymensagens 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')- umacaractere foi recebido do usuárioWM_CHAR('a')- umacaractere foi recebido do usuárioWM_CHAR('a')- umacaractere foi recebido do usuárioWM_CHAR('a')- umacaractere foi recebido do usuárioWM_CHAR('a')- umacaractere 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_CHARmensagem, aquela que se repete. Caso contrário, você perderá eventos quando uma tecla for pressionada.
Em HTML, as coisas são ligeiramente diferentes:
onKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyUp
Html entrega um KeyDowne KeyPresscada repetição de tecla. E o KeyUpevento só é gerado quando o usuário libera a tecla.
Aprendizado
- I pode responder a
onKeyDownouonKeyPress, mas ambos ainda são levantadas antes dainput.valuefoi 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?