jQuery: keyup event for mobile device
我遇到一些问题,导致在我的iPhone上触发按键事件,我的代码如下:
1 2 3 4 5 6 7 8 9 10 | 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 {} }); |
这样的想法是,当用户在
您可以添加输入事件。每当输入更改时,都会触发此事件。输入在台式机和手机上均可使用
1 2 3 | test.on('keyup input', function(){ //code }); |
您可以检查此答案以获取有关jQuery Input Event的更多详细信息
您可以使用三个事件(但您必须谨慎组合它们):
-
keyup:它可以在带有键盘的设备上使用,当您释放一个键(任何键,甚至是在屏幕上不显示任何内容的键,例如ALT或CTRL)时触发;
-
touchend:它可在触摸屏设备上使用,当您从显示屏上移开手指/笔时触发;
-
输入:当您按下一个键"并且输入更改"时触发(如果您按下ALT或CTRL这样的键,则不会触发此事件)。
input事件在键盘设备和触摸屏设备上都有效,必须指出这一点,因为在可接受的答案中,该示例是正确的但近似的:
1 2 | test.on('keyup input', function(){ } |
在基于键盘的设备上,此功能被调用两次,因为将触发事件键入和输入。
正确答案应为:
1 2 | test.on('keyup touchend', function(){ } |
(此功能在台式机/笔记本电脑的键盘上调用,或在手机的touchend上调用)
或者您可以简单地使用
1 2 | test.on('input', function(){ } |
,但请记住,输入事件不会被所有键(CTRL,ALT和
从设备上移除触摸点时,将触发touchend事件。
https://developer.mozilla.org/zh-CN/docs/Web/Events/touchend
您可以将keyup和touchend事件传递到.on()jQuery方法(而不是keyup()方法)中,以在这两个事件上触发代码。
1 2 3 | test.on('keyup touchend', function(){ //code }); |
n