触发'touchstart'在setTimeout中不起作用

时间:2017-06-14 17:59:21

标签: javascript jquery ios mobile settimeout

我想在setTimeout函数内触发对移动输入的关注。这很好用:

$('input').on('touchstart', function(){
    $(this).focus();
});
$('input').trigger('touchstart');

然而,这不起作用:

setTimeout(function(){
    $('input').on('touchstart', function(){
        $(this).focus();
    });
    $('input').trigger('touchstart');
},200);

占位符消失,就像输入被聚焦一样,但键盘和光标没有出现。我不知道为什么。有没有办法让这项工作?

2 个答案:

答案 0 :(得分:0)

与设置侦听器分开超时:

// It's ok to listen
$('input').on('touchstart', function(){
        $(this).focus();
    });

// Trigger only when you want it
setTimeout(function(){
    $('input').trigger('touchstart');
},200);

答案 1 :(得分:0)

我不知道为什么你需要暂停,但这似乎有效。

android:frameCount
$('input').on('touchstart', function() {
  $(this).focus();
});
setTimeout(function() {
  $('input').trigger('touchstart');
}, 200);