focus()在iOS上的setTimeout中不起作用

Nic*_*ans 12 css jquery focus

从iOS中的setTimeout中使用时,jQuery的focus()方法似乎不起作用.

所以,

setTimeout( function () {
    // Appears to have no effect in iOS, fine in Chrome/Safari/Firefox/IE
    $('.search').focus();    

}, 500);
Run Code Online (Sandbox Code Playgroud)

但就它本身而言,

// works fine.
$('.search').focus();    
Run Code Online (Sandbox Code Playgroud)

请参阅以下示例:

http://jsfiddle.net/nwe44/ypjkH/1/

如果focus()调用是在setTimeout之外进行的,那么它就可以了.这是非常好奇的,因为其他方法确实有效.例如,在我的jsFiddle中,我可以更改边框颜色,只是不要对焦它.有任何想法吗?

Eht*_*ham 2

检查我已更新的小提琴http://jsfiddle.net/ypjkH/7/

    $('#selector').click( function (e) {
        e.preventDefault();
        setTimeout( doFocus  
    , 3000);

    });

  function doFocus() {
      $('.search').focus().css('border', '1px solid red');
  }
Run Code Online (Sandbox Code Playgroud)

  • 是的,它聚焦了,但是键盘没有被调用,所以你不能输入任何东西。如果您从“setTimeout”外部调用“$('.search').focus()”,则会调用键盘。 (2认同)