我使用的一个商业网站的AutoCompleteExtender。 我的问题是用户快速键入一个单词的一部分,并立即按“回车”,它使自动完成控制不与建议列表回来。 例如,如果我的数据库中有短语“德克萨斯州,美国”中,但用户只需键入“得克萨斯”紧接着输入,则下拉列表中不会出现。
我想是自动完成控制忽略用户按下Enter键的事实去,反正获取建议的资料。 (最终是如果忽略输入时,有目前没有名单,但是当有一个列表中选择一个项目)。
我可以去一些字符非常快,然后“确认”此Microsoft ASP.NET网站和打字的样品部分模拟这种确切的问题。
请可能有人告诉我,我需要做什么?
谢谢,马丁
我解决这个问题之前,黑客对是自动完成的目标的文本框额外的keydown的处理程序。 更换this._autoCompleteBehavior
的片段与您AutoCompleteBehavior(通过获得的实例的引用低于$find()
和BehaviorID
)。 这里的想法是给力的自动完成行为,认为它需要通过调用执行查找_onTimerTick()
它打字延迟结束后执行。 默认情况下,输入延迟被通过敲击回车键取消了,所以这只是迫使查找反正上输入或选项卡。
免责声明:我劈引用AjaxControlToolkit代码的“私有”成员(的东西,用下划线开头是“私人”),所以它可能是不保证是面向未来的。
_searchTextbox_keydown: function(e)
{
var key = e.keyCode || e.rawEvent.keyCode;
// If the user hits enter or tab before the auto complete popup appears, force the autocomplete lookup at that moment.
if ((key === Sys.UI.Key.enter || key === Sys.UI.Key.tab) && this._autoCompleteBehavior._currentPrefix != this._autoCompleteBehavior._currentCompletionWord())
{
this._autoCompleteBehavior._onTimerTick(this._autoCompleteBehavior._timer, Sys.EventArgs.Empty);
e.preventDefault();
}
}
嘿尝试的jQuery或YUI自动完成扩展。 这将是快如闪电。