window.location.href on enter press返回undefined

时间:2018-04-18 14:10:37

标签: javascript

我正在尝试在搜索框中输入值,然后按Enter键将其重定向到/workers/VALUE

目前重定向到workers/undefined

我是否在var产品中引用了错误的类?



$(document).ready(function() {
  $(document).keypress(function(e) {
    if (e.which == 13) {
      e.preventDefault();
      // enter pressed
      var product = $("#search-box").val();
      window.location.href = "/workers/" + product;
    }
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<li class="nav-item hidden-sm-down search-box">
  <a class="nav-link hidden-sm-down text-muted waves-effect waves-dark" href="javascript:void(0)">
    <i class="ti-search"></i>
  </a>
  <form class="app-search">
    <input type="text" class="form-control search-box" placeholder="Search Wallet Address">
    <a class="srh-btn">
      <i class="ti-close"></i>
    </a>
  </form>
</li>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:3)

您正在寻找id,但您的搜索框仅将该ID设为class,因此请将其替换为:

$("#search-box")

用这个:

$("input.search-box")

答案 1 :(得分:3)

我不建议您使用window.location,但是您的错误在您的HTML中,您忘记了输入的ID。

<input type="text" id="search-box" class="form-control search-box" placeholder="Search Wallet Address">

或尝试使用课程

$(".search-box")

答案 2 :(得分:0)

您当前的代码正在寻找ID等于'search-box'的元素,该元素不存在。

您可以使用$(".search-box").get(0).val();选择具有特定类的第一个元素,但在您的情况下, li 元素也具有相同的类,因此此代码也不起作用(正如@somethinghere评论中指出的那样)。

要消除歧义,最好使用ID选择器,所以只需使用$("#search-box").val()并将ID添加到输入元素,如下所示:

<input id="search-box" type="text" class="form-control search-box" placeholder="Search Wallet Address">

答案 3 :(得分:0)

您在JavaScript中错误地引用了搜索框。

您应该使用&,因为您将搜索框设置为类,而不是ID。 Here is a quick reference on CSS selectors which might help

此外,您应该仅在要引用的元素(输入)上设置搜索框类,因为您似乎在列表项元素和输入元素上设置它。