javascript - JQuery UI 自动完成字母顺序,然后是匹配项

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

我正在研究 JQueryUI 自动完成,并且希望行为与默认行为略有不同。我有一个字符串数组:

var json = ["Atlanta", "Chicago", "Little Rock", "RockFord", "Rhode Island"];

当我输入以下内容进行自动完成时,我希望得到以下结果。

类型:“R”

实际结果:

小石城

罗德岛州

罗克福特

预期结果:

罗德岛州

罗克福特

小石城

类型:摇滚

实际结果:

小石城

罗克福特

预期结果:

罗克福特

小石城

这是我的 jsFiddle

我希望结果首先按字母顺序排序,然后是匹配项。我看了这个link但这只能让我按字母顺序排列。当我输入“Rock”时,我只会得到 RockFord。

有什么想法吗?

最佳答案

尝试使用 ._renderMenu$.grep()

var json = ["Alabama",
  "Alaska",
  "Arizona",
  "Arkansas",
  "California",
  "Colorado",
  "Connecticut",
  "Delaware",
  "Florida",
  "Georgia",
  "Hawaii",
  "Idaho",
  "Illinois",
  "Indiana",
  "Iowa",
  "Kansas",
  "Kentucky",
  "Little Rock",
  "Louisiana",
  "Maine",
  "Maryland",
  "Massachusetts",
  "Michigan",
  "Minnesota",
  "Mississippi",
  "Missouri",
  "Montana",
  "Nebraska",
  "Nevada",
  "New Hampshire",
  "New Jersey",
  "New Mexico",
  "New York",
  "North Carolina",
  "North Dakota",
  "Ohio",
  "Oklahoma",
  "Oregon",
  "Pennsylvania",
  "RockFord",
  "Rhode Island",
  "South Carolina",
  "South Dakota",
  "Tennessee",
  "Texas",
  "Utah",
  "Vermont",
  "Virginia",
  "Washington",
  "West Virginia",
  "Wisconsin",
  "Wyoming",
];

json.sort();

$("input").autocomplete({
  source: json
}).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 src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.9.2/jquery-ui.js">
</script>
<input type="text" />

jsfiddle http://jsfiddle.net/Gm9Bz/75/

<小时/>

另请参阅_renderMenu(ul, items) , jQueryUI: how can I custom-format the Autocomplete plug-in results? , Override both _renderItem and _renderMenu

关于javascript - JQuery UI 自动完成字母顺序,然后是匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414466/

相关文章:

javascript - 带有正则表达式的 jQuery 选择器

javascript - 带有隐藏 ID 字段的 jQuery UI 自动完成

javascript - chrome/safari(webkit?)在通过 Javascript .submit() 提交时不发布值

javascript - 通过ajax加载javascript

javascript - Jquery拖放允许2个元素

jquery - 停止 jQuery 中的递归动画

javascript - 如何在html字符串中的src属性末尾附加一个值

javascript - 仅在刷新页面后才可见 Firebase 存储中的更新记录

javascript - Jquery 根据输入值显示输入文本

javascript - 动画代码被忽略