【问题标题】:Setting the focus on a element that was hidden将焦点设置在隐藏的元素上
【发布时间】:2013-02-27 20:53:04
【问题描述】:

我正在寻找一种方法来触发焦点事件,该事件发生在元素在 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) ;    
}

http://jsfiddle.net/pvrSU/ 中的示例展示了如何使用 tab keyCode 实现此目的 我发现在触发模糊事件之前,另一个元素必须是可聚焦的。

【问题讨论】:

  • 如何显示元素?添加一些代码。
  • $('#emailRow').show()后缺少分号

标签: javascript jquery


【解决方案1】:

show() 函数有一个complete 回调,你可以在这种情况下使用它:

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

示例:http://jsfiddle.net/ar5wS/

【讨论】:

  • 没有回调...我会尝试的。我的机器上的回调函数失败了。
  • 感谢您的 CD。我将您的 jsfiddle 示例更改为在 blur 上执行,但问题仍然存在。看起来在模糊事件发生之前元素必须是可聚焦的。
  • 发现如果元素在 blur 事件之前显示它可以工作。感谢您的输入@CD...它帮助我找到了解决方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 2011-01-24
  • 2021-02-17
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2010-10-21
相关资源
最近更新 更多