我有一个输入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
设置为局部变量,因此不会刷新?
答案 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。