document.getElementById(“box”)。focus()不关注元素

时间:2015-12-11 22:05:57

标签: javascript html javascript-events focus riot.js

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

我正在使用RiotJS事件和标签。但我不认为这个问题与Riot有关,因为我尝试使用DOM上的元素和纯JS,但它仍然不起作用。

在控制台中,当我要求document.activeElement时,它会给我<input tabindex="0" id="box" type="text" placeholder="Search">,但它没有集中注意力。

更奇怪的是,我创建了一个onblur函数,重点关注元素onblur并且它有效!但当我尝试将其绑定到点击[所以我可以通过app.search.box.click();]触发它时,它不起作用。

我用谷歌搜索了很多关于如何用纯JS做这个的建议。

我在OSX优胜美地。使用最新的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();
}

0 个答案:

没有答案