【问题标题】:jQuery, displaying the text inside an input if the input text has more than two characters works more than once. (Every two characters)jQuery,如果输入文本有两个以上的字符,则在输入中显示文本不止一次。 (每两个字符)
【发布时间】:2020-07-23 01:19:58
【问题描述】:

我有一个 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 函数时,每两个字符记录一次结果,例如,如果我用六个字母写一个单词,结果将记录 3 次。我不允许在 getResults 函数中进行更改,但如果没有修复它,我会考虑。不知道如何把我的头缠住。提前致谢!

【问题讨论】:

    标签: jquery ajax api input text


    【解决方案1】:

    如果您只想返回一次结果,请使用相应的 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() 调用周围添加保护。

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-27
      • 2018-07-28
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多