【问题标题】:Textbox focus in asp updatepanel - Working with breakpoint but not withoutasp updatepanel中的文本框焦点-使用断点但并非没有
【发布时间】:2014-03-09 22:24:22
【问题描述】:

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

我正在尝试让一个文本框选择焦点上的所有文本;我希望它在执行搜索时自动聚焦,选择所有文本。

我有一个 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 获得了所选文本的焦点。 当我在文本框上按下回车键时,利用面板的默认按钮属性,我得到了我的结果,但文本框中的文本没有被选中。

奇怪的是,如果我在groupSearchButton_Click方法中设置焦点的地方放一个断点,上面在文本框中按回车的方法可以正常工作并选择文本。

有什么想法吗?

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

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

【问题讨论】:

  • 如果有效,请考虑将其标记为已接受的答案。

标签: c# javascript asp.net breakpoints


【解决方案1】:

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

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

在您的面板上

【讨论】:

    【解决方案2】:

    你可以在Page_Load使用这个:

     protected void Page_Load(object sender, EventArgs e)
        {
             if (IsPostBack)
            {
                groupSearchTextbox.Focus();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多