按下按键时获取文本框的值

4

我有一个在按键事件之后执行的函数:

$("#txtarea").keypress(function(){
    alert(document.getElementById("txtarea").value);
});

我希望在每次按键后都能返回文本区域的新文本,以便可以在其他JavaScript函数中同时使用。但是这段代码存在的问题是,一旦按下键盘,该函数就会显示一个空字符串。谢谢您的帮助。
4个回答

5

尽量使用keyup而不是keypress


1
"keyup" 与 "keypress" 有不同的含义和用法。 - gdoron
谢谢你,我的朋友,这也很有用。+1 - SmootQ

3
您可以使用以下代码,注意使用keyup而不是keypress,因为这意味着已将按键添加到文本区域中:

您可以使用此代码,注意使用keyup而不是keypress,因为这意味着已将按键添加到文本区域中:

​$('#txtarea').keyup(function() {
    alert(this.value);
});​​​​​​​

此外,无需使用 document.getElementById,只需使用 this.value。 http://jsfiddle.net/A8XxK/1

1
"keyup" 与 "keypress" 有不同的含义和用法。 - gdoron
谢谢朋友,+1...这很有用。 - SmootQ

3
按键按下事件在赋值之前触发。就像其他所有事件(点击、提交等等)一样,您可以取消默认行为和“stuff”。
$('#txtarea').keypress(function(event) {
    return false; // this will disable the new value assignment
});

使用 event.which 可以找出被点击的按钮并进行操作。

示例:

<input id="txtarea" />​

$('#txtarea').keypress(function(e){
    var value = this.value; 
    alert(value);
    alert(value + String.fromCharCode(e.which))
})​;

JSFiddle演示

你也可以使用keyup事件,但它与keypress的含义和用法不同。
请注意!


谢谢朋友,你的回答很有用。但是我已经使用了keyup(我知道它的作用)。。。再次感谢+1:))) - SmootQ

0

在零长度超时后执行行为。

$("#txtarea").keypress(function(){
    setTimeout(function () {
        alert(document.getElementById("txtarea").value);
    }, 0);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接