我有一个非常奇怪的问题,我的代码使用代码中设置的断点,但是当我删除断点时,部分代码停止运行。
我正在尝试使文本框选择焦点上的所有文本;我想让它在执行搜索时自动对焦,选择所有文本。
我有一个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修复程序,但是仍然想知道是否有一个合适的方法来正确处理这个
答案 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();
}
}