人们希望在页面加载时在搜索字段上设置光标。代码:
<input class="search-input"
data-dojo-type="dijit/form/TextBox"
data-dojo-attach-point="searchNode"
data-dojo-attach-event="keyup: searchKeyUpEvent"
data-dojo-props="
focused: true,
placeHolder: 'Search'" />
在页面加载时,TextBox小部件有一个焦点框架,但光标不在那里..
修改 我将重新提出一个问题:如何设置一些TextBox,所以当页面加载并且用户开始输入时,它默认会出现在TextBox中?
答案 0 :(得分:3)
focused
被记录为_FocusMixin
中的只读属性;设置它最初不会做你认为它做的。
要最初聚焦窗口小部件,您需要从JS获取对它的引用并调用其focus
方法。
鉴于您已定义了附加点和附加事件,我假设此窗口小部件是另一个窗口小部件模板的一部分,在这种情况下,您应该能够最初将其集中在模板化小部件的startup
方法(虽然取决于您的网页/应用加载方式,但可能有更好的时间来执行此操作):
startup: function () {
if (this._started) {
return;
}
this.inherited(arguments);
this.searchNode.focus();
});
(我可能建议不要调用附加点&#34; searchNode&#34;,因为它在这种情况下是一个小部件,而不是DOM节点。)
答案 1 :(得分:1)
花了几个小时尝试一堆解决方案(其中没有一个有效)我带来了实际解决问题的解决方案 - 使用setTimeout()
window.setTimeout(function(){
_this.searchNode.focusNode.focus();
}, 0);
我不喜欢使用计时器(即使是零计时器)的想法,但这可能是唯一的解决方案。