Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查文本框中的某个值,如果该值在3秒钟内未更改,则执行某些操作,否则在3秒钟后再次检查?_Javascript_Jquery - Fatal编程技术网

Javascript 如何检查文本框中的某个值,如果该值在3秒钟内未更改,则执行某些操作,否则在3秒钟后再次检查?

Javascript 如何检查文本框中的某个值,如果该值在3秒钟内未更改,则执行某些操作,否则在3秒钟后再次检查?,javascript,jquery,Javascript,Jquery,这是我的尝试,但我相信“checkerthisVal”是导致问题的部分 $("#search-input").keyup(function () { var thisVal = $(this).val(); if(thisVal!=''){ var checker = function (v){ if($(this).val() !=v){ setTimeout(

这是我的尝试,但我相信“checkerthisVal”是导致问题的部分

  $("#search-input").keyup(function () {
        var thisVal = $(this).val();
        if(thisVal!=''){

            var checker = function (v){
                if($(this).val() !=v){
                    setTimeout('checker(thisVal)', 3000);
                }
                else{
                    console.log($(this).val());
                }
            }
            setTimeout(function(){checker(thisVal)}, 3000);

        }
    });

谢谢。

我相信您希望将此作为超时线:

 setTimeout(function(){checker(thisVal)}, 3000);
编辑:尝试此代码

$("#search-input").keyup(function() {
    var thisVal = $(this).val();
    if (thisVal !== '') {

        var checker = function(v) {
            if (thisVal !== v) {
                setTimeout('checker(thisVal)', 3000);
            }
            else {
                console.log(thisVal);
            }
        }

        setTimeout(function() {
            checker(thisVal)
        }, 3000);
    }
});​

.

我相信您希望将此作为超时线:

 setTimeout(function(){checker(thisVal)}, 3000);
编辑:尝试此代码

$("#search-input").keyup(function() {
    var thisVal = $(this).val();
    if (thisVal !== '') {

        var checker = function(v) {
            if (thisVal !== v) {
                setTimeout('checker(thisVal)', 3000);
            }
            else {
                console.log(thisVal);
            }
        }

        setTimeout(function() {
            checker(thisVal)
        }, 3000);
    }
});​

.

我想我会采取不同的方法来解决这个问题

var that = $(this);
var thisVal = that.val();
var refreshIntervalId = setInterval(function(){
  if(that.val() === thisVal){
    console.log(thisVal);        
  }        
}, 3000);

clearInterval(refreshIntervalId);//will stop the checks

我想我会采取不同的方法来解决这个问题

var that = $(this);
var thisVal = that.val();
var refreshIntervalId = setInterval(function(){
  if(that.val() === thisVal){
    console.log(thisVal);        
  }        
}, 3000);

clearInterval(refreshIntervalId);//will stop the checks
使用Function.call可以在函数运行时定义此选项。当checker从keyup事件运行时,这是输入元素。当它从setInterval运行时,这通常是窗口对象。调用函数允许您再次将其设置为输入元素


使用Function.call可以在函数运行时定义此选项。当checker从keyup事件运行时,这是输入元素。当它从setInterval运行时,这通常是窗口对象。调用函数可以让您再次将其设置为输入元素。

我想您需要这个

请查看此库:

另外,我给你举了一个例子:


希望这有帮助:-

我想你需要这个

请查看此库:

另外,我给你举了一个例子:


希望这有帮助:-

他无法将值传递到setTimeout。他无法将值传递到setTimeout。这解决了错误,但现在我有了一个新的错误:console.log$this.val;请查看我编辑的代码。谢谢。错误是无法调用undefined的方法'toLowerCase',并指向console.log行,这是因为当从setTimeout而不是从keyup事件调用checker时,这已更改。这解决了错误,但现在我在这里有一个新的方法:console.log$this.val;请查看我编辑的代码。谢谢。错误是无法调用undefined的方法“toLowerCase”,并指向console.log行,这是因为在从setTimeout而不是从keyup事件调用checker时,这已更改。