2013-02-12 42 views
1

我有一个非常简单的问题,我正在努力寻找解决方案。jQuery自动完成在ASP.NET回发期间不保留值

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

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

在此文本框中,我绑定了一个像这样的jQuery UI自动填充小部件。如预期然而txtCourse.Text不会存留(或回发),它正在与填充值发生

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

回发。

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

我已经尝试设置一个计时器非常轻微延迟投递的执行会:

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

虽然这似乎是工作,我觉得这不应该是必要的,不知道为什么这是必需的。

我在做什么错?任何帮助将真诚感谢。

+0

回发前右,设置像'$上文本框的值,事( “#<%= txtCourse.ClientID%>”)值(的SelectedValue )'所以文本框发布的价值,并保留后发回。如果不发生,意味着您在后面的代码上更改了文本框的值。 – Aristos 2013-02-13 00:17:49

回答

1

您是否需要发布选定的项目?

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

编辑:或也许:

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

Spot on ...您的帖子让我意识到值显然没有被设置,直到事件完成并且此解决方法似乎解决了它。非常感谢你... – 2013-02-13 01:16:08