当用户在文本框中键入文本时,我尝试在其中获取文本(JSFIDLE):
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
期间的输入文本
框的值始终是更改前的值:
问题:如何在按键过程中获取文本框的文本?
HTML DOM中有三个与“用户正在键入”相关的事件:
onKeyDown
onKeyPress
onKeyUp
在Windows中,当用户按住一个键并开始重复时,WM_Key
消息的顺序变得很重要:
WM_KEYDOWN('a')
-用户按下了a键将导致文本控件中出现五个字符:aaaaa
重要的一点是,您响应WM_CHAR
消息,重复的消息。否则,当按下键时,您将错过事件。
在超文本标记语言中,情况略有不同:
onKeyDown
Html提供了一个KeyDown
和KeyPress
每个按键重复。而KeyUp
事件仅在用户释放钥匙时才会引发。
外卖
onKeyDown
或onKeyPress
,但在输入之前,这两个按钮都会被触发。值
已更新onKeyUp
,因为它不会在文本框中的文本更改时发生
问题:如何在按键过程中获取文本框的文本?
onKeyPress期间输入文本框的值始终为更改前的值
这是故意的:这允许事件侦听器取消按键。
如果事件侦听器取消事件,则不更新该值。如果事件未被取消,则在调用事件侦听器之后更新该值。
要在字段值更新后获取值,请计划在下一个事件循环中运行函数。通常的方法是调用setTimeout
,超时时间为0
:
$('#field').keyup(function() {
var $field = $(this);
// this is the value before the keypress
var beforeVal = $field.val();
setTimeout(function() {
// this is the value after the keypress
var afterVal = $field.val();
}, 0);
});
试试这里:http://jsfiddle.net/Q57gY/2/
编辑:某些浏览器(如Chrome)不会触发退格按键事件;将按键更改为键入代码。
处理input
事件是一个一致的解决方案:它在所有当代浏览器中都支持textarea
和input
元素,并在需要时准确触发:
function edValueKeyPress() {
var edValue = document.getElementById("edValue");
var s = edValue.value;
var lblValue = document.getElementById("lblValue");
lblValue.innerText = "The text box contains: " + s;
}
<input id="edValue" type="text" onInput="edValueKeyPress()"><br>
<span id="lblValue">The text box contains: </span>
保持简单。同时使用onKeyPress()
和onKeyUp()
:
<input id="edValue" type="text" onKeyPress="edValueKeyPress()" onKeyUp="edValueKeyPress()">
这将负责获取最新的字符串值(在键向上后),并在用户按住键时进行更新。
jsfiddle:http://jsfiddle.net/VDd6C/8/
问题内容: 使用jQuery获取和呈现输入值的方法有哪些? 这是一个: 问题答案:
问题内容: 在量角器的文档中,我看到以下示例: 此处显而易见的是,您可以使用“ by.model”在输入框中设置值,但是如果您要查看输入框并查看其中的内容,则需要使用“ by.binding”。 我有一组代码(摘要)在其中执行: (在我的真实代码中,我保存了实体,然后在编辑模式下返回了该实体,并且我正在检查我的值是否已保存。但是它仍然归结为同一件事,并且此示例代码也存在相同的问题)。 这给我一个错
在量角器的文档中,我看到了下面的例子: 这里看起来很清楚的是,您可以使用“by.model”在输入框中设置值,但是如果要查看输入框并查看其中的内容,则需要使用“by.binding”。 我有一组代码,其中(总结)我这样做: (在我的真实代码中,我保存实体,然后在编辑模式下返回它,并且我正在检查我的值是否实际保存。但它仍然归结为同样的事情,这个示例代码给出了同样的问题)。 这给了我一个错误: 理论上
问题内容: 在某些情况下,我必须从标记中获取文本,例如- 输入标签中的文本是一些说 但是当我使用时,它什么也不会返回。 无论如何,我可以从标签中获取文本吗? 问题答案: 您可以使用以下任何一种: 让我知道这是否没有帮助。
我有一个HTML元素. 加载页面后,我可以使用从该元素获取文本。 但随后我点击这个元素并更改里面的文本(例如,改为“已编辑”)。DOM中没有任何变化,包括属性 的值(即仍然返回“initial”,并且DOM中的元素看起来像) 如何提取现在在浏览器中可见的值(即字符串“已编辑”)?我需要执行一些JavaScript或其他东西吗?
我有以下一组复选框: 使用javascript,我如何访问每个项目的文本。例如,对于id=“mensajes\u receptores\u list\u 5”的元素,我想得到文本“Carlos(Admin)”