jQuery UI自动完成小部件:在执行搜索之前编辑搜索词

时间:2017-03-29 19:53:13

标签: javascript jquery jquery-ui autocomplete

我在文本输入上使用自动完成小部件( #MapSearchName )。源是一个简单的字符串数组( MapListNames )。我需要在显示自动填充结果之前修改搜索字词。

在我的情况下, MapListNames 数组内容字符串为西里尔字母,当用户使用西里尔语进行搜索时,它会起作用。当用户在拉丁语中搜索时,我希望自动填充建议搜索结果。我写了一个 Met2Kir() 函数,它将拉丁字符串转换为西里尔字符串。

我发现这应该通过使用请求/响应函数来完成,但在自动完成文档中没有特别清楚地描述,我无法猜测应该采用哪种方法。

这是我的代码:

    $( "#MapSearchName" ).autocomplete({
    // source: MapListNames,
    delay: 0,
    autoFocus: true,

    source: function( request, response ) {
      var term = Met2Kir(request.term);
      response(  MapListNames, function( item ){
          return term;
      } );
    }   

});

我需要一些来源部分的帮助,以便在发送用于搜索之前,Met2Kir()函数处理任何用户输入。

整个情况可以在这里找到:Lyaskovets Citymap(它是保加利亚语,但 #MapSearchName 就在地图下方)< / p>

JS代码位于citymap.js file

的末尾

1 个答案:

答案 0 :(得分:1)

这可以通过将结果过滤到新阵列并将其发送回response()来完成。例如:

$("#MapSearchName").autocomplete({
  delay: 0,
  autoFocus: true,
  source: function( request, response ) {
    var term = Met2Kir(request.term);
    var results = $.ui.autocomplete.filter(MapListNames, term);
    response(results);
  }
});