0

看看是否有人可以帮助我弄清楚为什么我的元素没有聚焦。

我正在使用 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();
}
4

0 回答 0