【发布时间】:2011-07-09 03:20:23
【问题描述】:
我正在做一种标签自动完成组合。
所以基本上当用户输入一个没有自动完成选项的查询时,即“aaa”,我希望自动完成下拉并显示“Press 'Enter' to create a tag for 'aaa'。”
我在文档上找不到任何东西(我想这需要我做一些黑客攻击,但在这样做之前,我想看看是否有人为此做了补丁。)
编辑:
我已经开始研究源代码,这就是我所拥有的:
$.ui.autocomplete.prototype._response= function( content ) {
/* BUG: when the user clicks "Press Enter to this tag",
* the tag "Press enter to create this tag"
* gets created
*/
console.log(content);
if (content.length == 0) {
content = [{ 'label': "Press Enter to create this tag.", "value": -1 }];
}
if ( !this.options.disabled && content && content.length ) {
content = this._normalize( content );
this._suggest( content );
this._trigger( "open" );
} else {
this.close();
}
this.pending--;
if ( !this.pending ) {
this.element.removeClass( "ui-autocomplete-loading" );
}
};
这很好用。但是,当用户单击“按 Enter 键进入此标签”时,会创建“按 Enter 键创建此标签”标签。如何将其修复为原始查询?
【问题讨论】:
-
您的用户真的关心标签是否存在吗?在大多数情况下,我会说不要。通常,使新标签的创建对用户透明似乎对用户更友好。我假设您的自动完成列表会在从结果中选择它时添加一个标签,但是即使在找到标签时它没有被使用,您仍然可以有一个“添加标签”按钮或类似的东西。然后,如果没有找到结果或用户不想点击自动完成选项,他们仍然可以添加标签。通过单击提交(或按回车键)。只是一个想法。
-
@Jeremy 我认为最简洁的方法就是告诉用户键入并输入。如果用户键入存在的内容,它将显示,但是,如果未找到查询,则空框可能会使用户感到困惑。我只想在自动完成搜索框中显示“按'Enter'创建此标签”
-
我的意思是,如果有一个提交按钮,它将显示为一个向用户提交的输入,我认为这不会令人困惑。但这只是我的观点,我没有做过焦点小组来支持这一点! :)
标签: jquery autocomplete