我正在使用YUI进行自动完成,我需要动态更改自动完成的数据。
例如,我有一个输入框,上面写着“用户名”,它将根据函数(userName)自动完成,这将相应地返回一个数组。
我该如何实现?
答案 0 :(得分:0)
执行此操作的一种方法是将AutoComplete
的{{3}}定义为函数:
new Y.AutoComplete({
// your code here ...
source: getSource
});
在该函数中,您可以返回动态修改的结果数组:
function getSource() {
if (something) {
return [ 'something' ];
}
else {
return [ 'somethingElse' ];
}
}
这是一个可运行的示例:(单击按钮更改完成阵列)
YUI().use('autocomplete', function(Y) {
var reversed = false;
function getSource() {
if (!reversed) {
return ['foo', 'bar', 'baz'];
} else {
return ['oof', 'rab', 'zab'];
}
}
new Y.AutoComplete({
inputNode: Y.one('#input'),
render: true,
source: getSource
});
Y.one('#button').on('click', function(event) {
reversed = !reversed;
});
});

<script src="https://cdn.rawgit.com/stiemannkj1/0214fdc4cccaa77d6e504320cf70a571/raw/63d260364730fb067f103c00862c7e65685256df/yui-3.18.1_build_yui_yui-min.js"></script>
<input id="input" />
<button id="button">Reverse</button>
&#13;
注意:您可以使用source
方法以编程方式重新查询源代码。如果您已更改列表并希望在用户键入任何新内容之前显示新列表,则此功能非常有用。
有关AutoComplete
动态来源的详细信息,请查看YUI 自动完成文章/文档的sendRequest()
部分。