首页 文章

在jQueryUI自动完成中创建minLength异常

提问于
浏览
0

我有一组数据,其中要求自动完成显示3个字符后的结果 . 但是,有一个数据长度只有两个字符..('LG') .

所以我的问题是;

有没有办法保留: minLength:3 虽然在键入某些字符时创建例外,例如('LG')?

我一直在尝试在success参数中对结果进行硬编码,如下所示,但它没有按预期工作 . 我希望我能走上正轨吗?

这是一段代码片段,到目前为止还有完整的代码;

success: function (LG, resp) {
         if (LG.length === 2) {
                LG.push({
                  label: 'LG',
                  value: 'LG',
                });
            }
        response(LG);

        var results = [];
        $.each(resp.Q0, function(k, v) {
          if (v.indexOf(request.term.toUpperCase()) >= 0) {
            results.push(v);
          }
        });
        response(results);
      }
    });
  },

https://plnkr.co/edit/wfAoi0sZDdDd0pCufQi9

1 回答

  • 0

    我认为一个选项是修改minChars并修改成功函数 . 在这里,我为您添加代码,告诉我是否适合您的问题 .

    $(document).ready(function() {
          setTimeout(function() {
            $('#_Q0').autocomplete({
      source: function(request, response) {
        $.ajax({
          url: "brands.json",
          dataType: "JSON",
          type: "GET",
          success: function (resp) {
            var results = [];
            $.each(resp.Q0, function(k, v) {
               if (request.term.length >= 3 && v.indexOf(request.term.toUpperCase()) >= 0) {
                        results.push(v);
               }
               if (request.term.length == 2 && request.term.toUpperCase() == v) {
                        results.push(v);
               }
            });
            response(results);
          }
        });
      },
      autoFocus: true,
      minLength: 2,
      response: function(event, ui) {
        if (!ui.content.length) {
          var noResult = {
            value: "",
            label: "No results found"
          };
          ui.content.push(noResult);
        } 
      }
    });
    var render = $('#_Q0').autocomplete('instance')._renderMenu;
    $('#_Q0').autocomplete('instance')._renderMenu = function(ul, items) {
      items.push({
        label: 'AUTRE MARQUE',
        value: 'AUTRE MARQUE',
        last: true
      });
      render.call(this, ul, items);
    };
      }, 100);
    });
    

    我不喜欢的一点是我必须将minChars硬编码到成功函数中,也许我们可以找到从属性“minChars”恢复值的方法

    https://plnkr.co/edit/ygtMteIH1J5EI5KUMU3C?p=preview

相关问题