首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 9-关键事件不触发

iOS 9-关键事件不触发
EN

Stack Overflow用户
提问于 2015-10-15 15:46:39
回答 3查看 12.4K关注 0票数 10

是否还有其他人对keyup 9中的iOS事件有问题而不触发?

只是一个简单的测试床为我复制了这个问题。

代码语言:javascript
复制
<input id="txtInput" />

Vanilla JS:

代码语言:javascript
复制
document.getElementById('txtInput').onkeyup = function () {
    console.log('keyup triggered');
}

jQuery:

代码语言:javascript
复制
$('#txtInput').on('keyup', function () {
    console.log('keyup triggered');
});

也不是火..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-16 15:45:02

这不是很好,但是需要绑定到keydown以捕获按下哪个键,如果您想获得值,包括键入的键,则是input

代码语言:javascript
复制
(function () {
    var keyCode;

    $('#txtInput')
        .on('keydown', function (e) {
            // value not updated yet
            keyCode = e.keyCode;

            // Enter key does not trigger 'input' events; manually trigger it
            if (e.keyCode === 13) $(this).trigger('input');
        })
        .on('input', function (e) {
            console.log(keyCode, this.value);
        });
}());

如果键入“a”,则会发生以下情况:

  1. keydown火灾。
  2. e.keyCode设置为按下的键的ASCII值。
  3. this.value'' (即在输入'a‘之前相同)。
  4. input火灾。
  5. e.keyCodeundefined
  6. this.value'a'

如果按下enter (13)键,还可以手动触发input事件;默认情况下,此键不会触发input

票数 0
EN

Stack Overflow用户

发布于 2016-03-08 20:22:16

我建议在带有触摸屏的浏览器上使用keypress事件。不过,我知道你不能真正探测到触摸屏,所以它给您留下了一些可能由您的情况决定的选项。

  1. 同时附加事件keyupkeypress。这很可能取决于正在进行的处理量,以及在某些浏览器中是否会出现双激发。
  2. 尝试确定浏览器是否是触摸屏(比如使用现代派),然后附加一个备用处理程序(如change )。

无论哪种情况,最终都会有两个事件侦听器。

票数 3
EN

Stack Overflow用户

发布于 2017-08-30 12:32:48

代码语言:javascript
复制
$('#yourid').bind('keypress', function(e) {
    // This will work
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33152960

复制
相关文章

相似问题

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