我试图在用户输入文本框时获取文本 (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>
代码运行没有错误,除了 input text
框的 value 在 onKeyPress
期间始终是该值在变化之前:
Question: How do I get the text of a text box during
onKeyPress
?
奖金聊天
在 HTML DOM 中有三个与“用户正在输入”相关的事件:
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')
- 用户释放了 A 键
将导致文本控件中出现五个字符:aaaaa
重要的一点是您响应 WM_CHAR
消息,即重复的消息。否则,您会在按下某个键时错过事件。
在 HTML 中有些不同:
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyUp
Html 在每次按键重复时提供一个 KeyDown
和 KeyPress
。 KeyUp
事件仅在用户松开按键时触发。
外卖
- 我可以响应
onKeyDown
或onKeyPress
,但在input.value
已更新 - 我无法响应
onKeyUp
,因为它不会在文本框中的文本更改时发生。
问题:如何在 onKeyPress
期间获取文本框的文本?
红利阅读
最佳答案
保持简单。同时使用 onKeyPress()
和 onKeyUp()
:
<input id="edValue" type="text" onKeyPress="edValueKeyPress()" onKeyUp="edValueKeyPress()">
这会负责获取最新的字符串值(在按下键后),并在用户按住某个键时进行更新。
jsfiddle:http://jsfiddle.net/VDd6C/8/
关于javascript - 如何在 onKeyPress 期间获取输入文本框的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365686/