jQuery:移动设备的 keyup 事件

新手上路,请多包涵

我在 iPhone 上触发 keyup 事件时遇到了一些问题,我的代码如下:

         var passwordArray = ["word", "test", "hello", "another", "here"];

        var test = document.getElementById('enter-password');
        test.addEventListener('keyup', function(e) {

            if (jQuery.inArray(this.value, passwordArray) != -1) {
                alert("THIS IS WORKING");
            } else {}

        });

这个想法是,当用户在 #enter-password 字段中输入时,当他们匹配 passwordArray 中的单词时,警报将触发。这适用于桌面,例如,一旦您输入了 word 该功能将在您输入 --- 后立即 d 。有没有办法让它也适用于移动设备?

原文由 user1374796 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 348
2 个回答

您可以添加输入事件。这是一个只要输入发生变化就会触发的事件。输入既适用于台式机,也适用于手机

test.on('keyup input', function(){
  //code
});

您可以查看此答案以获取有关 jQuery 输入事件 的更多详细信息

原文由 Joyson 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用三个事件(但您必须注意如何“组合”它们):

  • keyup :它适用于带键盘的设备,当你释放一个键时触发(任何键,甚至是不在屏幕上显示任何内容的键,如 ALT 或 CTRL);

  • touchend :它适用于触摸屏设备,当您从显示屏上移开手指/笔时会触发它;

  • input :当你按下一个键“并且输入改变”时它被触发(如果你按下像 ALT 或 CTRL 这样的键,这个事件不会被触发)。

输入 事件适用于键盘设备和触摸屏设备,指出这一点很重要,因为在接受的答案中,示例是正确的但近似:

 test.on('keyup input', function(){
}

基于键盘的设备上,此函数被调用两次, 因为事件 keyupinput 都将被触发。

正确答案应该是:

 test.on('keyup touchend', function(){
}

(该功能在台式机/笔记本电脑的 keyup 或手机的 touchend 上调用)

或者你可以简单地使用

test.on('input', function(){
}

但请记住, 输入 事件不会被所有键触发(CTRL、ALT 等不会触发事件)。

原文由 Frank 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题