文本框焦点在asp updatepanel -工作与断点,但不能没有

本文关键字:断点 但不能 工作 焦点 asp updatepanel 文本 | 更新日期: 2023-09-27 17:49:14

我遇到了一个非常奇怪的问题,我的代码在代码中设置了断点,但是当我删除断点时,部分代码停止运行。

我试图使一个文本框选择焦点上的所有文本;我想让它自动对焦,选择所有的文本,当搜索执行。

我有一个文本框(groupSearchTextbox),按钮(groupSearchButton),和一个列表框是在一个更新面板内,面板内的默认按钮指定:

<asp:Panel ID="groupPanel" runat="server" CssClass="listContainer" DefaultButton="groupSearchButton">
    <h2>User Groups</h2>
    <div class="searches">
        <asp:TextBox ID="groupSearchTextbox" runat="server"></asp:TextBox>
        <asp:Button ID="groupSearchButton" runat="server" Text="Search" OnClick="groupSearchButton_Click" />
        <asp:Button ID="showAllGroupsButton" runat="server" Text="Show All" OnClick="showAllGroupsButton_Click" CssClass="right" />
    </div>
    <asp:UpdatePanel ID="groupUpdate" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:ListBox ID="groupListbox" runat="server" CssClass="list"></asp:ListBox>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="groupSearchButton" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="showAllGroupsButton" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
</asp:Panel>

我也有一个jquery函数,使文本框选择焦点:

$('.searches input[type=text]').focus(function () {
        $(this).select();
    });

和groupSearchButton的onclick我有以下函数从列表框中删除项目,如果它们不是搜索的结果,并专注于文本框:

protected void groupSearchButton_Click(object sender, EventArgs e) {
    fillGroups(); //Sets the listbox to the original list
    string searchString = groupSearchTextbox.Text;`
    for (int i = groupListbox.Items.Count - 1; i > 0; i--) {
        string itemName = groupListbox.Items[i].ToString();
        if (!itemName.ToLower().Contains(searchString.ToLower())) {
            groupListbox.Items.Remove(groupListbox.Items[i]);
        }
    }
    groupSearchTextbox.Focus();
}

当我单击groupSearchButton时,一切都按预期工作。我得到了我的结果,groupSearchTextbox得到了选定文本的焦点。当我在文本框上按enter键时,利用面板的默认按钮属性,我得到了结果,但文本框中的文本没有被选中。

奇怪的是,如果我在groupSearchButton_Click方法中设置焦点的地方放置了一个断点,那么上面在文本框中按enter键的方法就会正常工作,并且文本被选中。

你知道这是怎么回事吗?

编辑:我很确定问题是文本框需要失去焦点以便它在再次聚焦时选择文本。这就解释了实际点击按钮工作,以及(我相信)断点问题,因为当Visual Studio显示时,文本框会失去焦点。

我想出了一个相当粗糙的jquery修复这个问题,但仍然想知道是否有一个体面的方法来正确处理这个

文本框焦点在asp updatepanel -工作与断点,但不能没有

如果你想只关注一个文本框,那么你可以使用

<asp:Panel ID="groupPanel" runat="server" CssClass="listContainer" DefaultButton="groupSearchButton" defaultfocus="groupSearchTextbox">
面板

您可以在Page_Load中使用:

 protected void Page_Load(object sender, EventArgs e)
    {
         if (IsPostBack)
        {
            groupSearchTextbox.Focus();
        }
    }
相关文章: