首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >easyAutocomplete函数停止我的密钥处理程序

easyAutocomplete函数停止我的密钥处理程序
EN

Stack Overflow用户
提问于 2020-10-14 21:15:45
回答 2查看 317关注 0票数 1

我正在写一个代码来自动完成我网站上的城市搜索。问题是ajax函数一旦调用,就会阻止对keyup事件的后续调用。实际上,只要在输入中达到三个字符,ajax调用就会从我使用的API中获取数据(在这一点上一切都很好),但是会发生一些事情,并且不能再次调用keyup事件(我的console.log不会被触发)。

这是我的HTML代码:

代码语言:javascript
复制
<input type="text" id="prova" class="form-control search-slt" placeholder="Enter name1..." data-behavior="autocomplete" />

这是我的JS代码:

代码语言:javascript
复制
$(function () {
    var minlength = 3;
        $('#prova').keyup(function (e) {
          var that = this,
          value = $(this).val();
          console.log("keyup");
      if (value.length >= minlength ) {
        searchRequest = $.ajax({
          type: "GET",
          url: "https://nominatim.openstreetmap.org/search?q=" + $("#prova").val() + "&format=json",
          //async: false,
          success: function(results) {

            console.log(results);
            var aList = results;
            var aOptions = [];

            for (i = 0; i < aList.length; i++) {
              //optKey = aList[i].geometry.coordinates[0] + ',' + aList[i].geometry.coordinates[1];
              optLabel = aList[i].display_name;
              aOptions.push(optLabel);
            }

            var options = {
              data: aOptions
            };
            console.log(options);
            $("#prova").easyAutocomplete(options);
          }
    });
  }
});

});

我调试了代码,并意识到easyAutocomplete函数是阻止随后的keyup调用的函数。发生了我不明白的事。easyAutocomplete是Rails的创业板,但它不过是jQuery的easyAutocomplete插件的包装器。当我将options数组传递给easyAutocomplete函数时,您能告诉我发生了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-14 23:15:29

好的。尝尝这个。将lookup.js更改为以下内容:

代码语言:javascript
复制
let options = {
    minCharNumber: 3,
    url: function (phrase) {
        return "https://nominatim.openstreetmap.org/search?q=" + $("#prova").val() + "&format=json";
    },

    getValue: "display_name",
    list: {
        match: {
            enabled: true
        }
    }
};

$("#prova").easyAutocomplete(options);

现在该按你想的方式工作了。这有助于我的排名。另外,如果它为您修复了它,请点击“这解决了我的问题”。谢谢,杰里米

票数 2
EN

Stack Overflow用户

发布于 2020-10-14 21:52:20

你可能错过了图书馆。我让它与您的JavaScript一起工作:我创建了一个名为查找的文件夹。在文件夹中,我创建了两个文件:

  1. test.html
  2. lookup.js
  3. Downloaded并从http://easyautocomplete.com/files/EasyAutocomplete-1.3.5.zip

中解压缩了EasyAutoComplet-1.3.5文件夹中的代码

test.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Lookup</title>
    <link rel="stylesheet" href="EasyAutocomplete-1.3.5/easy-autocomplete.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <input type="text" id="prova" class="form-control search-slt" placeholder="Enter name1..." data-behavior="autocomplete" />
<script src="EasyAutocomplete-1.3.5/jquery.easy-autocomplete.min.js"></script>
<script src="lookup.js" defer></script>
</body>
</html>

lookup.js

代码语言:javascript
复制
$(function () {
    var minlength = 3;
    $('#prova').keyup(function (e) {
        var that = this,
            value = $(this).val();
        console.log("keyup");
        if (value.length >= minlength) {
            searchRequest = $.ajax({
                type: "GET",
                url: "https://nominatim.openstreetmap.org/search?q=" + $("#prova").val() + "&format=json",
                //async: false,
                success: function (results) {

                    console.log(results);
                    var aList = results;
                    var aOptions = [];

                    for (i = 0; i < aList.length; i++) {
                        //optKey = aList[i].geometry.coordinates[0] + ',' + aList[i].geometry.coordinates[1];
                        optLabel = aList[i].display_name;
                        aOptions.push(optLabel);
                    }

                    var options = {
                        data: aOptions
                    };
                    console.log(options);
                    $("#prova").easyAutocomplete(options);
                }
            });
        }
    });
});

就这样。应该能正常工作。希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64361602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档