jQuery:移动设备的keyup事件

use*_*796 12 javascript mobile jquery click 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 {}

        });
Run Code Online (Sandbox Code Playgroud)

这个想法是,当用户输入#enter-password字段时,当他们匹配passwordArray警报中的单词时,将触发.这适用于桌面,例如,一旦你输入word该功能,一旦你输入该功能就会立即开火d.反正有没有让它适用于移动设备?

Joy*_*son 26

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

test.on('keyup input', function(){
  //code
});
Run Code Online (Sandbox Code Playgroud)

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


Fra*_*ank 12

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

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

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

  • 输入:当你按下一个键"并且输入改变"时触发它(如果按下ALT或CTRL这样的键,则不触发此事件).

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

test.on('keyup input', function(){
}
Run Code Online (Sandbox Code Playgroud)

基于键盘的设备,这个函数被调用两次,因为这两个事件KEYUP输入将被解雇.

正确答案应该是:

test.on('keyup touchend', function(){
}
Run Code Online (Sandbox Code Playgroud)

(该函数被调用的KEYUP台式机/笔记本电脑或touchend的手机)

或者你可以简单地使用

test.on('input', function(){
}
Run Code Online (Sandbox Code Playgroud)

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