这只是最奇怪的事情。我有一个Sammy.js应用程序,我想在HTML加载后立即将焦点设置在文本字段上。我在这里有这个CoffeeScript:
this.partial('templates/my-template.jqt').then ->
i = $('#item')
debugger
i.focus()
当我在调试器中时,就在那一行,我可以检查“i”并看到它是一个JQuery对象。我甚至可以调用i.val(“HI THERE!”)并查看我的文本字段更新。但是,调用i.focus()绝对没有任何作用。是否存在一些我不知道的安全功能,它不会让您专注于动态加载的文本元素?
答案 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()
。
感谢。 问候,
<强>瓦西姆强>