jQuery,如果输入文本包含两个以上的字符,则在输入中显示文本可以多次工作。(每两个字符)

jQuery,如果输入文本包含两个以上的字符,则在输入中显示文本可以多次工作。(每两个字符),jquery,ajax,api,input,text,Jquery,Ajax,Api,Input,Text,我有一个jQuery函数,当文本输入字段包含两个以上字符时,我希望执行该函数: $('#textInput').on('input', displaySuggestions); function displaySuggestions(){ if($('#textInput')[0].value.length > 2){ let searchValue = $('#textInput')[0].value; $.myObj.getResults( s

我有一个jQuery函数,当文本输入字段包含两个以上字符时,我希望执行该函数:

$('#textInput').on('input', displaySuggestions);

function displaySuggestions(){
    if($('#textInput')[0].value.length > 2){
        let searchValue = $('#textInput')[0].value;
        $.myObj.getResults( searchValue, (results) => {            
          console.log(results); 
      });
    }
}
如果我不使用我需要的getResults函数,那么这个函数工作得很好。它来自一个如下所示的插件:

(function($) {

    $.myObj = {

        getResults: function(value, callBack){
            var req = $.ajax({
                url:'http://api.my/api/name' + value
            });

             req.done(callBack);
        }
    };

}(jQuery));

函数应该记录api调用的JSON数据结果。当文本输入字段中添加了两个以上的字符时,它应该只返回一次结果。但是,当使用getResults函数时,结果每两个字符记录一次,例如,如果我用六个字母写一个单词,结果将记录三次。我不允许在GETRESULT函数中进行更改,但是如果周围没有修复,我会考虑。我不知道该怎么做。提前谢谢

如果希望只返回一次结果,请使用相应的off方法删除处理程序

function displaySuggestions(){
    if ($('#textInput')[0].value.length > 2) {
        let searchValue = $('#textInput')[0].value;
        $.myObj.getResults( searchValue, (results) => {            
          console.log(results); 
      });
      $('#textInput').off('input', displaySuggestions);
    }
}
如果要在每次输入超过2个字符时调用结果(例如,用户删除输入并重新键入),请在getResults()调用周围添加一个保护

让displayResults=true;
函数显示建议(){
让searchValue=$('#textInput')[0].value;
如果(显示结果){
如果(searchValue.length>2){
显示结果=假;
$.myObj.getResults(searchValue,(results)=>{
控制台日志(结果);
});
}
}else if(searchValue.length<2){
displayResults=true;
}
}
let displayResults = true;
function displaySuggestions() {
    let searchValue = $('#textInput')[0].value;
    if (displayResults) {
        if (searchValue.length > 2) {
            displayResults= false;
            $.myObj.getResults( searchValue, (results) => {
                console.log(results); 
            });
        }
    } else if (searchValue.length < 2) {
        displayResults = true;
    }
}