jQuery UI /自动完成 - 如何更改默认变量名称?

问题描述:

jQuery UI自动完成使用变量名称“”,“id”和“标签”创建下拉列表。例如:jQuery UI /自动完成 - 如何更改默认变量名称?

select:function当然在我点击下拉列表中的一个项目时运行。但是,我似乎没有任何控制它用于填充下拉列表的变量名称(ui.item.label)。我在列表中单击并在输入字段中输入值(ui.item.value)时也是如此。

是否有任何简单的方法来更改它用于填充下拉列表和输入字段的默认变量名称?

  • 这样做的原因是,我来自我无法控制的远程服务器获取JSON数据。

  • 我不想编辑.js,因为它很可能会定期发布新版本的.js。

  • 我真的很喜欢能够在服务器回调和下拉菜单打开之间编辑变量及其内容。

谢谢你的时间。

+0

一个小时,没有回复,我终于问了一个足够奇怪的问题吗? :) – Mattis 2010-07-13 16:29:35

我忘了在这里写我的答案。我想到了。自动完成代码中有一个内置的成功处理程序。有了它,你可以从服务器获取变量,并将它们组合成适当的(id,label,value)。像这样使用它:

$("#cities").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "http://ws.geonames.org/searchJSON", 
      dataType: "jsonp", 
      data: { 
       featureClass: "P", 
       style: "full", 
       maxRows: 12, 
       name_startsWith: request.term 
      }, 
      success: function(data) { 
       response($.map(data.geonames, function(item) { 
        return { 
         label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, 
         value: item.name 
        } 
       })) 
      } 
     }) 
    }, 
    minLength: 2, 
    select: function(event, ui) { 
     // when clicked in list 
    }, 
    open: function() { 
     // triggered when the list is opened 
    }, 
    close: function() { 
     // triggered when the list is hidden 
    } 
});