0

我正在尝试将数据显示到一个 JQuery 自动完成下拉菜单中。该信息是从一个动态 ASPX 中检索的:

$("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>')

显然我不想做比必要更多的 GET,所以我对 Java Timer 有一些控制(在每次按键时):

if (timerActive) {
    stopTimer();
}

timer = setTimeout('obtainItems()', 800);
timerActive = true;

并且获取项目确实:

$("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>')
stopTimer();

这东西一般都有效,但我已经看到了箭头和 AvPag 的一些特殊行为。当显示下拉列表的记录时,如果我按 AvPag 组件会选择正确的记录,但两秒钟后又回到上一个记录。

我的第一个理论是 .autocomplete 正在重置焦点,但我注意到这是不正确的。我认为这是一个错误(BUG LINK),但它也不起作用。

请,如果有人可以帮助...非常感谢!

4

1 回答 1

0

如果没有计时器,它是否可以正常工作?

我猜你的 onkeypress 事件被触发,用户选择他们想要的,然后计时器事件触发重置项目。

添加一个变量

var selected = false;

并将选定的事件附加到您的自动完成并设置selected = true

让你的gainItem看起来像这样:

function obtainItems()
{
    if (!selected)
    {
        $("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>')
        stopTimer();
    }
}
于 2010-02-04T17:46:07.617 回答