在 JS 中显示另一个带有自动完成功能的按钮

Display another button with autocomplete in JS

我正在尝试从 json url 执行自动完成,效果很好。

现在我想要的是,当我点击自动完成时,我想显示导入按钮,如果输入为空或者我们输入了一个新值(不在导入中),则显示创建按钮。

给你一个例子,说明我正在用一些数据做什么:

$('#search-deal').autocomplete({
  source: function(request, response) {
    var data =[{
        "id": 1671,
        "title": "Queens Park Tyres deal"
      }, {
        "id": 1672,
        "title": "Wildman Craft Lager deal"
      }, {
        "id": 1673,
        "title": "General Store deal"
      }, {
        "id": 1674,
        "title": "Deluxe Off Licence deal"
      }, {
        "id": 1675,
        "title": "Ahmed Halal Bazaar deal"
      }];
    
    var datamap = data.map(function(i) {
      return {
        label: i.id + ' - ' + i.title,
        value: i.id + ' - ' + i.title,
        desc: i.title
      }
    });
    
    var key = request.term;
    
    datamap = datamap.filter(function(i) {
      if(i.label.toLowerCase().indexOf(key.toLowerCase()) >= 0){
        document.getElementById("create").style.visibility = 'hidden';
        document.getElementById("import").style.visibility = 'visible';
        return i.label.toLowerCase().indexOf(key.toLowerCase()) >= 0;
          };
    });

    response(datamap);
  },
  minLength: 1,
  delay: 100
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>

<input type="text" id="search-deal" />
<button id="create" type="submit" class="btn btn-primary">Créer une affaire</button>
<button id="import" type="submit" style="visibility:hidden" class="btn btn-primary">Importer</button>

这里的问题是,当我写“p”时,按钮导入出现,我只想在点击自动完成时出现。 第二个问题,如果值为空或输入另一个值,则创建按钮永远不会返回

有人可以帮助我吗?

我从分享的片段中得知您正在使用 jquery ui autocomplete。 我建议遵循 changes/updates 您的代码

  1. 要在选择自动完成项目时更改按钮显示,请使用 select 事件。 https://api.jqueryui.com/autocomplete/#event-select
  2. 每当用户键入内容时,隐藏导入按钮。仅在选择项目时显示。
  3. 要处理空输入情况,请使用 oninput 事件。

我已对您分享的代码进行了以下更改

  1. 添加了一个新函数来处理按钮切换
  2. source 属性 中隐藏导入按钮,即当用户键入一些输入时以及当输入框为空白时
  3. 当用户选择自动完成选项时显示导入按钮

工作代码link: https://plnkr.co/edit/PgzUuOADhIqk9zbl?preview

希望这能解决您的问题