Javascript 将焦点设置在隐藏的元素上

Javascript 将焦点设置在隐藏的元素上,javascript,jquery,Javascript,Jquery,我正在寻找一种方法来触发一个焦点事件,该事件发生在一个元素在DOM中被识别为可聚焦之后 我正在显示基于先前输入的表单元素。这很有效。 然后我想设置用户输入的焦点 以下函数无法工作,除非我使用setTimeout在行上设置断点。 我尝试过使用函数回调,但也失败了 function triggerFocus(id,timeout){ console.log('triggerFocus') ; console.log(id) ; /* the following works i

我正在寻找一种方法来触发一个焦点事件,该事件发生在一个元素在DOM中被识别为可聚焦之后

我正在显示基于先前输入的表单元素。这很有效。 然后我想设置用户输入的焦点

以下函数无法工作,除非我使用setTimeout在行上设置断点。 我尝试过使用函数回调,但也失败了

function triggerFocus(id,timeout){
    console.log('triggerFocus') ;
    console.log(id) ;
    /* the following works if a breakpoint is set*/
    setTimeout( function() { $( id ).focus() }, timeout ) ;
}

/* code used to show the elements from another function */
if ( $('#first').val() == '') {
    $('#firstRow').show() ;
    $('#middleRow').show() ;
    $('#lastRow').show() ;
    $('#emailRow').show() ;    
    triggerFocus($('#first'),100) ;    
} else {
    $('#docket').blur(docketBlur) ;
    $('#firstRow').show() ;
    $('#docketRow').show() ;
    triggerFocus($('#docket'),100) ;    
}
有关如何使用tab键代码实现此目的的示例,请参阅 我发现在触发模糊事件之前,另一个元素必须是可聚焦的。

该函数有一个
complete
回调,您可以在这种情况下使用它:

$('#emailRow').show(400, function(){
 .
 .
 .
})

示例:

如何显示元素?添加一些代码。
$('#emailRow')后面缺少分号。show()
不带回调。。。我试试看。在我的机器上回调函数失败。谢谢你的CD。我将您的JSFIDLE示例更改为在blur上执行,问题仍然存在。在模糊事件发生之前,该元素看起来必须是可聚焦的。发现如果该元素在模糊事件发生之前显示,则该元素可以工作。感谢您的输入@CD。它帮助我找到了一个解决办法。