小编典典

如何在KeyUp上进行文本框回发?

ajax

我有一个文本框,它可以更改OnTextChanged事件中下拉列表的内容。当文本框失去焦点时,将触发此事件。如何在按键或按键事件上发生这种情况?

这是我的代码示例

<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”事件,但这仅适用于按下的第一个键。


阅读 174

收藏
2020-07-26

共1个答案

小编典典

这样可以解决您的问题。逻辑与Kyle建议的解决方案相同。

看看这个。

<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");
    }

我添加了其他文本框以查看操作中的更改,请删除该文本框。

2020-07-26