看看是否有人可以帮助我弄清楚为什么我的元素没有聚焦。
我正在使用 RiotJS 事件和标签。但我认为这个问题与 Riot 无关,因为我用 DOM 上的元素和纯 JS 尝试过它,但它仍然不起作用。
在控制台中,当我要求document.activeElement
它给我<input tabindex="0" id="box" type="text" placeholder="Search">
但它没有集中。
更奇怪的是,我创建了一个onblur
专注于 onblur 元素的函数并且它可以工作!但是当我尝试将它绑定到点击 [所以我可以通过app.search.box.click();
] 触发它时,它不起作用。
我用谷歌搜索了很多,并尝试了很多关于如何使用纯 JS 做到这一点的建议。
我在 OSX Yosemite 上。使用最新的 Chrome、Firefox 和 Safari。任何事情都没有运气。请指教。
这是我的search.tag
代码:
<search>
<a href="javascript:void(0)" id="close" onclick={ close }><i class="fa-remove fa"></i></a>
<div class="elements">
<input tabindex="0" id="box" type="text" placeholder="Search things" onkeyup={ search } onclick={ focusBox } />
<span id="loading" class="hide"><i class="fa fa-gear fa-spin"></i></span>
<a id="searchButton" href="javascript:void(0)" name="search">
<i class="fa fa-arrow-right"></i>
</a>
</div>
<script>
this.search = function(event) {
app.search.trigger('search', event, box.value);
}
this.close = function(event) {
app.search.trigger('close');
}
this.focusBox = function(event){
var element = event.target || event.srcElement;
window.setTimeout(function() {element.focus()}, 1000);
}
</script>
</search>
这是触发打开的 search.js 代码:
search.open = function(event) {
search.container.classList.remove('hide');
search.container.classList.remove('closed');
search.box.focus();
}