自动完成功能无法正常工作

Posted

技术标签:

【中文标题】自动完成功能无法正常工作【英文标题】:Autocomplete feature not working properly 【发布时间】:2020-10-12 14:38:31 【问题描述】:
<html>
<head>
<link href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" rel="Stylesheet"></link>
<title>Welcome to the page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js" ></script> 
</head>
<body>
<input type="text" id="suggestion" />
</body>

<script type="text/javascript">
$.getJSON( "data.json", function( data ) 
      
      var data_arr = data.map(function(val)
                 return val.name;
        )
       
       auto(data_arr)
     );
         
    function auto(data_arr)

        $('#suggestion').autocomplete(
            source: data_arr    
        ).data("ui-autocomplete")._renderMenu = function (ul, items) 
            var that = this;
            var val = that.element.val();
            $.each($.grep(items, function (value, key) 
                return new RegExp(val.toLowerCase()).test(value.value.toLowerCase().slice(0, val.length))
            ), function (index, item) 
                that._renderItemData(ul, item);
            );
        ;
    
    
</script>
</html>

数据.json

[  
        
            "id": "136599",
            "name": "CE712A#BGJ"
        ,
        
            "id": "137704",
            "name": "12C#ABA"
        ,
        
            "id": "137705",
            "name": "F2212A#ABA"
        
]

以上代码适用于data.json 文件中存在的所需值。一旦输入除data.json 文件之外的任何值,建议就会弹出一点并消失。当data.json 中不存在输入时,我实际上不希望显示任何内容。请帮帮我。

【问题讨论】:

【参考方案1】:

考虑以下几点:

<link href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" rel="Stylesheet"></link>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<input type="text" id="suggestion" />
<script type="text/javascript">
  $('#suggestion').autocomplete(
    source: function(req, resp) 
      $.getJSON("data.json", function(data) 
        var data_arr = $.ui.autocomplete.filter(data.map(function(val) 
          return val.name;
        ), req.term);
        resp(data_arr);
      );
    
  );
</script>

如果您使用函数作为源,您可以在将 JSON 输出的结果传递给自动完成之前调整它们。如果需要,您可以考虑将它们映射到 labelvalue 对。

查看更多:https://api.jqueryui.com/autocomplete/

【讨论】:

@Beginner 它已经在“实际代码”中,但我无法使用 AJAX 调用进行测试。您必须更新和调整代码以进行测试。 这是我得到的错误:Uncaught TypeError: Cannot read property 'label' of undefined at jquery-ui.js:7143 at Function.grep (jquery.min.js:2) at Function .filter (jquery-ui.js:7142) at Object.success ((index):16) at j (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2)在 x (jquery.min.js:4) 在 XMLHttpRequest.b (jquery.min.js:4)

以上是关于自动完成功能无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

jquery自动完成功能无法正常工作

使用 Flutter 在 Android Studio 中自动完成功能无法正常工作 - 第一个建议无关紧要

社交引擎上的自动完成好友列表无法正常工作

更改并重新初始化自动完成功能

自动完成无法正常工作

PhpStorm 中的 TailwindCSS 自动完成功能不起作用