首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery键盘事件

jQuery键盘事件
EN

Stack Overflow用户
提问于 2011-04-01 23:30:54
回答 4查看 9.5K关注 0票数 6

使用jQuery,我想捕获一个键盘事件,即:

  • 在用户把手指从钥匙上拿出来之前
  • 在键盘事件中的字符在输入框中注册后。

若要澄清,请查看此示例。当keypress触发时,input值尚未更新。

编辑

显然我不清楚我需要什么。

该函数必须在之前调用用户从键中抬起手指,但是在之后的键的字符被放置在输入框中。因此,以下内容不起作用:

  • 按键:在keypress事件中,文本框中的值尚未更新
  • 键按:在keypress事件中,文本框中的值尚未更新
  • keyup:当用户举起手指时,这会被调用,为时已晚。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-02 18:18:08

您可以使用input事件,它适用于所有主要浏览器的最新版本:

代码语言:javascript
复制
var input = document.getElementById("your_input_id");
input.oninput = function() {
    alert(input.value);
};

不幸的是,它不能在IE <= 8中工作。但是,在这些浏览器中,您可以在value属性上使用propertychange事件:

代码语言:javascript
复制
input.onpropertychange = function() {
    if (window.event.propertyName == "value") {
        alert(input.value);
    }
};

因此,普通的JavaScript应答者@Andy E在他的博客https://web.archive.org/web/20140626060232/http://whattheheadsaid.com/2011/10/update-html5-oninput-event-plugin-for-jquery上详细介绍了这一点。

票数 13
EN

Stack Overflow用户

发布于 2011-04-01 23:35:41

您可以侦听keydown事件并将值存储在变量中。该变量将具有新输入之前的值,新输入将包含在keyup事件中。

更新:

好吧,我误解了你的要求,但是没有一个事件能满足你的需求。我唯一能想到的模拟这种行为的方法是:

  • 收听keydown/keypress
  • event对象获取值(获取event.which,然后将其转换为实际值)
  • 使用我在原始通知中提到的变量,并将新的输入连接到其中。

这里有一个小提琴:http://jsfiddle.net/HpXuU/13/

这显然不是一个完美的解决方案,因为它需要一些(可能是不必要的)工作才能完成。我建议重新考虑你的需求,但如果这种行为绝对是你所需要的,我认为这是朝着正确方向迈出的一步。

票数 3
EN

Stack Overflow用户

发布于 2011-04-01 23:46:09

使用键控事件jsFiddle上的实例

代码语言:javascript
复制
$("textarea").keyup(function(e){
   alert($(this).val());
});

它发生在你举起钥匙之后。我不知道您想要实现什么,但是您可以在解除密钥(在keydownkeypress上)之前存储状态,并在需要时稍后进行恢复。您也可以使用e.preventDefault(),所以即使在键打开之后,它也不会注册区域中的值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5519936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档