当用户在文本框中输入文本时,我try 将文本输入其中(jsfiddle playground):
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>
代码运行时没有错误,只是在onKeyPress
个个期间input text
框的value始终是更改后的值before:
Question:如何在
onKeyPress
个个期间获取文本框的文本?
花言巧语
HTML DOM中有三个与"the user is typing"相关的事件:
-
onKeyDown
个个个个 -
onKeyPress
个个 -
onKeyUp
个个
在Windows中,当用户按住一个键并且该键开始重复时,WM_Key
条消息的顺序变得重要:
-
WM_KEYDOWN('a')
-用户已按下A键 -
WM_CHAR('a')
--已收到来自用户的a
个字符 -
WM_CHAR('a')
--已收到来自用户的a
个字符 -
WM_CHAR('a')
--已收到来自用户的a
个字符 -
WM_CHAR('a')
--已收到来自用户的a
个字符 -
WM_CHAR('a')
--已收到来自用户的a
个字符 -
WM_KEYUP('a')
-用户已释放键
将导致文本控件中出现五个字符:aaaaa
重要的一点是,你要回复WM_CHAR
条信息,也就是重复的那条信息.否则,当按下某个键时,您会错过事件.
在HTML种情况下,情况略有不同:
-
onKeyDown
个个个个 -
onKeyPress
个个 -
onKeyDown
个个个个 -
onKeyPress
个个 -
onKeyDown
个个个个 -
onKeyPress
个个 -
onKeyDown
个个个个 -
onKeyPress
个个 -
onKeyDown
个个个个 -
onKeyPress
个个 -
onKeyUp
个个
HTML每按一次键就会重复KeyDown
次和KeyPress
次.并且仅当用户松开键时才引发KeyUp
事件.
Take aways个
- I can respond to
onKeyDown
个个个个 oronKeyPress
个个, but both are still raised before theinput.value
has been updated - I cannot respond to
onKeyUp
个个, because it doesn't happen as the text in the text-box changes.
Question:如何在onKeyPress
个个期间获取文本框的文本?