我写了一个带有jQuery UI自动完成功能的页面。
用户打算使用自动填充功能从地点列表中选择一个位置。在此改进之前,用户必须从长列表中选择一个位置,除了一个问题之外,这会更好。
位置的格式如下:
“加拿大”
“加拿大 - >艾伯塔省”
“加拿大 - >英属哥伦比亚”
“美国”
“美国 - >阿拉巴马州”
“美国 - >阿拉斯加”
等等。所以,我通过输入“CA”来测试这个应用程序,期望列表中的国家/地区与“CA”类似:“Canada”,“United States - > California”,“Mexico - > Campeche”。
然而,令我沮丧的是,我看到所有加拿大省份逐一列出,因为“CA”与“加拿大”中的“CA”相匹配。我现在有近20种选择可供选择。
用户在查找州时必须查看具有国家/地区名称和州名称的层次结构,但“加拿大”作为国家/地区必须是单个匹配作为单个位置。
如何设置jQuery自动完成功能,以允许我在如此多的单词中指定只有“ - >”右侧的文本是匹配吗?
现在,在我的Javascript代码中,我有 var locations =“[{'label':'Canada','value','Canada'},{'label':'Canada - &gt; Alberta','value':'Alberta'} ...]。< / p>
我不想让这个工作异步。我担心这会导致太多的网络服务电话。
答案 0 :(得分:0)
我想出来了。它有助于获得良好的jQuery UI参考!
对于.autocomplete方法的源变量,您可以传入自动填充数据,或者您可以将处理程序传递给函数以检索自动填充选项,如下所示:
$('#txtData').autocomplete( source: getData )
处理程序函数将传递两个参数,第一个是具有一个字段的对象:term
,其中包含用户输入的文本。另一个是另一个函数的处理程序。另一个函数接受一个参数,即包含自动完成选项的数据:
function getData(userData, setAutocompleteData) {
var userText = userData.term;
var autocompleteData = getMatchingOptions(userText);
// getMatchingOptions returns a list of matching autocomplete options
setAutocompleteData(autocompleteData);
}
上面的代码框架与getMatchingOptions
的实现相结合,可以让您自定义向用户显示的自动填充选项。