如何在jQuery .on函数中定义局部变量

时间:2016-09-26 20:25:09

标签: javascript jquery

我有一个输入HTML元素,想要在有输入时执行一个函数,如果这个输入没有改变3秒。

代码:

$("#search_input").on('input', function() {
  input_value = $("#search_input").val();
  if (input_value != "") {
    setTimeout(function() {
      if (input_value == $("#search_input").val()) {
        alert("still the same :) -> go search");
      }
    }, 3000);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="form-control" id="search_input" placeholder="Search...">

问题是处理程序刷新了input_value所以它始终是相同的。如何将input_value设置为局部变量,因此不会刷新?

3 个答案:

答案 0 :(得分:5)

您忘记了var input_value = $("#search_input").val(); 声明:

indexOf()

答案 1 :(得分:0)

虽然变量是真的,但问题不太可能。

看起来你想要类似下面的链接,关键区别在于你设置超时并在输入改变时清除超时。根据定义,当输入发生变化时,上述函数总是触发,因此它是多余的。

Run javascript function when user finishes typing instead of on key up?

答案 2 :(得分:-4)

var var_name =值,如果它是一个正常变量。像一个字符串或数字。 如果它是一个jQuery对象,那么$ var_name = jQuery_object。