Asp.net 用户按“自动完成”时停止;输入“;

Asp.net 用户按“自动完成”时停止;输入“;,asp.net,.net-2.0,autocomplete,ajaxcontroltoolkit,Asp.net,.net 2.0,Autocomplete,Ajaxcontroltoolkit,我正在一个商业网站上使用AutoCompleteXtender。我的问题是,用户快速键入一个单词的一部分,然后立即按“回车”,这会导致自动完成控件无法返回建议列表。例如,如果我的数据库中有短语“Texas,United States”,但用户只是快速键入“Texas”,然后按Enter键,则不会出现下拉列表 我希望AutoComplete控件忽略用户按Enter键并继续获取建议数据的事实。(如果它在当前没有列表时忽略Enter,但在有列表时选择了一个项目,则为最终结果) 我可以通过转到这个Mic

我正在一个商业网站上使用AutoCompleteXtender。我的问题是,用户快速键入一个单词的一部分,然后立即按“回车”,这会导致自动完成控件无法返回建议列表。例如,如果我的数据库中有短语“Texas,United States”,但用户只是快速键入“Texas”,然后按Enter键,则不会出现下拉列表

我希望AutoComplete控件忽略用户按Enter键并继续获取建议数据的事实。(如果它在当前没有列表时忽略Enter,但在有列表时选择了一个项目,则为最终结果)

我可以通过转到这个Microsoft ASP.NET站点的“示例”部分,在输入一些字符后很快输入“Enter”来模拟这个确切的问题

有人能告诉我需要做什么吗


谢谢,Martin,请尝试jQuery或YUI自动完成扩展程序。这将是闪电般的快。

我以前在自动完成的目标文本框上使用了一个额外的按键处理程序来解决这个问题。替换
此项。_autoCompleteBehavior
在下面的代码段中,引用您的autoCompleteBehavior实例(可通过
$find()
行为ID
获取)。这里的想法是通过调用
\u onTimerTick()
,强制自动完成行为认为它需要执行查找,这将在输入延迟过期后执行。默认情况下,通过按enter键取消键入延迟,因此这只是强制在enter或tab上进行查找

免责声明:我的hack引用了AjaxControlToolkit代码中的“private”成员(以下划线开头的内容是“private”),因此它可能不能保证是未来的证明

_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();
    }
}

你的前提可能有缺陷。输入几个字符并按Enter键的用户很清楚他们想要什么。为什么在他们认为不需要的情况下强迫他们查看列表?有几种情况下,你希望强迫他查看,例如,在独特的位置/标签的情况下,你希望他们看到的不是德克萨斯州,而是德克萨斯州,美国或其不是ajaxcontroltool而是AjaxControlToolKit从我到目前为止所看到的是,自动完成控件尽量懒散地获取数据,以避免在服务器和javascript中加载大量请求,因此只要你停止按键,它们就会告诉你答案。Martin要求的是相反的,急切地搜索和显示结果。是的,我希望用户选择他们想要的确切位置(问题可以在www.reviewyourrent.com上看到),因此我希望即使用户按下“回车”键,位置列表也会出现。我注意到HotelClub将用户带到第二个页面,其中包含最近的比赛城市列表,但我更愿意跳过第二个页面,在第一个搜索页面上获得正确的位置。因此,我真的需要解决这个“输入”的关键问题!任何技术解决方案都将不胜感激。不,这不是我追求的速度,因为AJAX自动完成很好。事实上,当用户按“输入”时,列表不会出现。要使$find(“自动完成”)起作用,您需要设置BehaviorID=“自动完成”“在AutoCompleteXtender xml标记上