Asp.net

如何在 KeyUp 上進行文本框回發?

  • November 18, 2009

我有一個文本框,可以更改 OnTextChanged 事件中下拉列表的內容。當文本框失去焦點時,似乎會觸發此事件。如何在 keypress 或 keyup 事件上發生這種情況?

這是我的程式碼範例

<asp:TextBox ID="Code" runat="server" AutoPostBack="true" OnTextChanged="Code_TextChanged">                

<asp:UpdatePanel ID="Update" runat="server">
   <ContentTemplate>
       <asp:DropDownList runat="server" ID="DateList" />             
   </ContentTemplate>
   <Triggers>
       <asp:AsyncPostBackTrigger ControlID="Code" />
   </Triggers>
</asp:UpdatePanel>

所以在程式碼隱藏中,我在頁面載入時綁定下拉菜單。Code_TextChanged 事件只是重新綁定下拉列表。我希望這發生在每次按鍵時,而不是在文本框失去焦點時發生。

我最近繼承了這段程式碼,這對我來說不是理想的方法,但是時間限制阻止我在 web 服務方法中重寫它。

我嘗試使用 jQuery 綁定“keyup”事件以匹配文本框的“change”事件,但這僅適用於按下的第一個鍵。

這將解決您的問題。邏輯與凱爾建議的解決方案相同。

看看這個。

<head runat="server">
<title></title>
<script type="text/javascript">
   function RefreshUpdatePanel() {
       __doPostBack('<%= Code.ClientID %>', '');
   };
</script>

   <asp:TextBox ID="Code" runat="server" onkeyup="RefreshUpdatePanel();" AutoPostBack="true" OnTextChanged="Code_TextChanged"></asp:TextBox>
   <asp:UpdatePanel ID="Update" runat="server">
       <ContentTemplate>
           <asp:DropDownList runat="server" ID="DateList" />
           <asp:TextBox runat="server" ID="CurrentTime" ></asp:TextBox>
       </ContentTemplate>
       <Triggers>
           <asp:AsyncPostBackTrigger ControlID="Code" />
       </Triggers>
   </asp:UpdatePanel>

後面的程式碼是這樣的……

protected void Code_TextChanged(object sender, EventArgs e)
   {
       //Adding current time (minutes and seconds) into dropdownlist
       DateList.Items.Insert(0, new ListItem(DateTime.Now.ToString("mm:ss")));

       //Setting current time (minutes and seconds) into textbox
       CurrentTime.Text = DateTime.Now.ToString("mm:ss");
   }

我添加了額外的文本框以查看操作的變化,請刪除文本框。

引用自:https://stackoverflow.com/questions/1758240