【发布时间】:2017-02-14 11:09:29
【问题描述】:
我有一个带有 jquery-ui-autocomplete 的位置输入字段。
<script type="text/javascript">
$(document).ready(function(){
var location_input=$('input[id="location-autocomplete"]');
var cityNames = [
{ value: 'Mallorca' },
{ value: 'Berlin' },
{ value: 'London' },
// many other elements
];
location_input.autocomplete({
source: cityNames,
minLength: 2
});
} );
// keeps same width as box
jQuery.ui.autocomplete.prototype._resizeMenu = function () {
var ul = this.menu.element;
ul.outerWidth(this.element.outerWidth());
}
</script>
但是,我不喜欢同一个位置可以有不同名称的情况。
例如,假设用户想要寻找马略卡岛。他可以写:Mallorca、Majorca、Palma de Mallorca、PMI 或 Palma .
我的第一个想法是使用label 属性
var cityNames = [
{ value: 'Mallorca', label: 'Palma de Mallorca' },
{ value: 'Mallorca', label: 'Mallorca' },
{ value: 'Mallorca', label: 'Majorca' },
// etc
];
但是,这可能非常令人困惑。编写 Ma 自动完成将显示 Mallorca、Palma de Mallorca 和 Majorca,即使它们是同一个地方。
我希望在键入 Ma 时,用户只会得到一个建议。同样,无论用户输入 Maj、Mal 还是 Pal,他都应该只得到一个关于 Mallorca 的建议词。
理想情况下,一个名为input 的附加属性作为要搜索的输入关键字会是完美的。然后,拥有一个属性为value 和input 的数组就可以了。不幸的是,我在文档中没有找到这样的东西。
如您所见,我使用array 作为源类型。对于我读到的内容,也许function 类型可以让我做这样的事情,但我不清楚如何做,因为我对 js 不是很熟悉,也没有找到任何明确的例子。
我怎样才能以简单的方式实现这一目标?
【问题讨论】:
标签: jquery jquery-ui autocomplete jquery-ui-autocomplete