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该function就会立即开启。 反正有没有让它适用于移动设备?

您可以添加输入事件。 这是一个在输入发生变化时触发的事件。 输入适用于台式机和手机

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

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

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

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

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

  • 输入 :当你按一个键“并且输入改变”时触发它(如果你按下ALT或CTRL键这个事件没有被触发)。

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

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

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

正确答案应该是:

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

(该function在台式机/笔记本电脑的键盘调用 ,或在手机的触摸屏调用

或者你可以简单地使用

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

但请记住,所有键都不会触发输入事件(CTRL,ALT&co。不会触发事件)。

从设备中移除触摸点时会触发touchend事件。

https://developer.mozilla.org/en-US/docs/Web/Events/touchend

您可以将keyup和touchend事件传递给.on()jQuery方法(而不是keyup()方法)来触发这两个事件的代码。

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