无法在文本字段上设置focus()

时间:2010-11-30 04:51:26

标签: javascript sammy.js

这只是最奇怪的事情。我有一个Sammy.js应用程序,我想在HTML加载后立即将焦点设置在文本字段上。我在这里有这个CoffeeScript:

this.partial('templates/my-template.jqt').then ->
  i = $('#item')
  debugger
  i.focus()

当我在调试器中时,就在那一行,我可以检查“i”并看到它是一个JQuery对象。我甚至可以调用i.val(“HI THERE!”)并查看我的文本字段更新。但是,调用i.focus()绝对没有任何作用。是否存在一些我不知道的安全功能,它不会让您专注于动态加载的文本元素?

4 个答案:

答案 0 :(得分:7)

尝试:

setTimeout(function() { $('#item').focus() }, 1);

这是一个很常见的问题。由于某种原因,将焦点延迟1ms使其工作。

答案 1 :(得分:2)

JQuery的focus()不关注元素,它将事件处理程序绑定到焦点。 http://api.jquery.com/focus/

尝试使用i.get()。focus()。

答案 2 :(得分:1)

这样做:

i.trigger 'focus'

答案 3 :(得分:0)

如果您确定收到了$('#item')个对象。您可以尝试一些事情。

确保您只有一个带<input type="text" id="item" />的输入框。不应重复相同的ID。

接下来就是为什么不试试$('#item').focus()

感谢。 问候,

<强>瓦西姆