JavaScript YUI自动完成源更改

时间:2015-02-09 10:00:27

标签: javascript yui

我正在使用YUI进行自动完成,我需要动态更改自动完成的数据。

例如,我有一个输入框,上面写着“用户名”,它将根据函数(userName)自动完成,这将相应地返回一个数组。

我该如何实现?

1 个答案:

答案 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;
&#13;
&#13;

注意:您可以使用source方法以编程方式重新查询源代码。如果您已更改列表并希望在用户键入任何新内容之前显示新列表,则此功能非常有用。

有关AutoComplete动态来源的详细信息,请查看YUI 自动完成文章/文档的sendRequest()部分。