jQuery:移动设备的keyup事件

21

我在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,函数就会立即触发。是否有方法让这也适用于移动设备?
4个回答

35

您可以添加输入事件。它是一种在输入更改时触发的事件。输入在桌面和移动电话上都可用。

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

您可以查看jQuery 输入事件的更多详细信息。


29

你可以使用三个事件(但需要小心如何“组合”它们):

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

  • touchend:适用于触摸屏设备,在从显示器上移除手指/笔后触发;

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

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

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

在基于键盘的设备上,此功能会被调用两次,因为会触发keyupinput这两个事件。

正确答案应该是:

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

该函数在桌面/笔记本电脑上的keyup事件或在移动设备上的touchend事件上调用。

或者您可以简单地使用

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

但请记住,input事件不会被所有按键触发(CTRL、ALT等将不会触发该事件)。


2
触摸结束事件是当一个接触点从设备上移除时触发的。您可以将 keyup 和 touchend 事件传递给 .on() jQuery 方法(而不是 keyup() 方法),以在这两个事件上触发您的代码。 https://developer.mozilla.org/en-US/docs/Web/Events/touchend
test.on('keyup touchend', function(){
//code
});

0

你应该添加一个输入事件。它可以在移动设备和计算机上使用。


在你的回答中添加更多信息会很有帮助。请参考常见问题解答,尝试更新你的回答。 - GMB

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