文本框焦点在asp updatepanel中 - 使用断点但不是没有

时间:2014-03-09 22:24:23

标签: c# javascript asp.net breakpoints

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

我正在尝试使文本框选择焦点上的所有文本;我想让它在执行搜索时自动对焦,选择所有文本。

我有一个texbox(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方法中设置焦点的断点,上面按下文本框中输入的方法可以正常工作并选择文本。

任何想法可能会在这里发生什么?

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

我想出了一个相当hacky的jquery修复程序,但是仍然想知道是否有一个合适的方法来正确处理这个

2 个答案:

答案 0 :(得分:2)

如果您只想关注一个文本框,则可以使用

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

答案 1 :(得分:0)

您可以在Page_Load

中使用此功能
 protected void Page_Load(object sender, EventArgs e)
    {
         if (IsPostBack)
        {
            groupSearchTextbox.Focus();
        }
    }
相关问题