1

我正在使用 Liferay 附带的 Alloy UI 自动完成插件。我的自动完成部分工作得很好。

现在,我要做的是捕获从自动完成自动建议中选择的数据,并执行操作。

比方说,如果我写ry自动完成然后列表出现如下:

ryan
rynda
ryab

现在,如果我单击任何项​​目或通过键盘箭头键选择并按 Enter,它将被复制到自动完成源输入框。但我想要的是,当用户选择一个特定的项目时,我想返回并且什么都不做ryab

我找到了活动

autocomplete.on('itemSelect',function(event) {
};

当我选择任何项目时会触发它,但我不知道如何获取被选择的对象以及如何通过比较对象来返回 false/什么也不做。

任何帮助,将不胜感激!

4

1 回答 1

3

以下代码应该可以解决问题:

var expandit = false;

autocomplete.on('itemSelect', function(event) {
    var currentValue = autocomplete.inputNode.get('value');
    //do comparison logic with currentValue here, and eventually set input node value to empty string
    if (currentValue == 'foo') {
        expandit = true;
        autocomplete.inputNode.set('value', '');
        // stop event propagation
        event.stopImmediatePropagation();
        return false;
    }
});

autocomplete.on('containerCollapse', function(event) {
    //reopen the menu in case of "do nothing" selection
    if (expandit) {
        autocomplete._sendQuery(autocomplete.inputNode.get('value') + '*');
        expandit = false;
    }
});

小部件的Alloy UI参考 API源代码Autocomplete非常有用。


要以编程方式显示菜单,您可以使用:

autocomplete._sendQuery(autocomplete.inputNode.get('value') + '*');
于 2012-11-20T17:53:45.783 回答