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

时间:2016-03-11 11:38:47

标签: javascript jquery jquery-ui autocomplete jquery-ui-autocomplete

我有一组数据,其中要求自动完成功能在写入3个字符后显示结果。但是,有一个数据只有两个字符长。(' LG')。

所以我的问题是;

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

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

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

 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 :(得分: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