1

我有一个非常简单的问题,我正在努力寻找解决方案。

基本上我有一个这样声明的 ASP.NET 文本框。

<asp:TextBox runat="server" ID="txtCourse" CssClass="input-xlarge HighlightibleField" placeholder=""></asp:TextBox>

在这个文本框上,我绑定了一个像这样的 jQuery UI 自动完成小部件。

$("#<% =txtCourse.ClientID %>").autocomplete({
    source: ["Course1", "Course2", "Course3"],
    select: function (event, ui) {
        __doPostBack("<% =btnPostBacker.UniqueID %>", "");
    }
});

回发按预期发生,但是 txtCourse.Text 不会保留(或回发)它填充的值。

因此,例如,我继续选择“Course1”,该值被填充到 txtCourse 文本框中,回发发生并且我查看 txtCourse.Text 的值,它仍然只是我使用键盘输入的文本(例如:“c”)。

我尝试设置一个计时器来稍微延迟回发的执行,如下所示:

setTimeout(function () {
    __doPostBack("<% =btnPostBacker.UniqueID %>", "");
}, 500);

虽然这似乎可行,但我觉得它不应该是必要的,也不知道为什么需要它。

我究竟做错了什么?任何帮助将不胜感激。

4

1 回答 1

1

您需要发布所选项目吗?

select: function( event, ui ) {
    __doPostBack("<% =btnPostBacker.UniqueID %>", ui.item);
}

编辑:或者也许:

  select: function( event, ui ) {
        $(this).val(ui.item);
        __doPostBack("<% =btnPostBacker.UniqueID %>", "");
    }
于 2013-02-13T00:20:22.613 回答