【发布时间】:2014-10-22 03:35:07
【问题描述】:
我正在创建有大约 20~ 左右 asp:TextBox 的网站,它们都使用回发。 我遇到的问题是每次回发时文本框都会失去焦点。 我已经设法将注意力集中在称为回发的元素上,但这不是我想要的,因为到那时新框已被关注。 我发现很少有 javascript 在回发后应该保持焦点,但无法让其中一个工作。 老实说,我不太了解 javascript,也不知道如何使用正确的程序,但似乎没有办法仅使用 html 和 c# 来实现我想要的。
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="form-group" id="vacancyTitleGroup" runat="server">
<label for="inputTitle" class="col-sm-5 control-label">Vacancy title <b>*</b></label>
<div class="col-sm-7">
<asp:TextBox runat="server" type="text" class="form-control" ID="inputTitle" placeholder="Vacancy title" OnTextChanged="inputTitle_TextChanged" AutoPostBack="True" MaxLength="50"></asp:TextBox>
</div>
</div>
<div class="form-group" id="positionGroup" runat="server">
<label for="inputPosition" class="col-sm-5 control-label">Employee Position</label>
<div class="col-sm-7">
<asp:TextBox runat="server" type="text" class="form-control" ID="inputPosition" placeholder="Employee Position" OnTextChanged="inputPosition_TextChanged" AutoPostBack="True"></asp:TextBox>
</div>
</div>
<div class="form-group" id="disciplineGroup" runat="server">
<label for="inputDiscipline" class="col-sm-5 control-label">Job Field/Discipline</label>
<div class="col-sm-7">
<asp:TextBox runat="server" type="text" class="form-control" ID="inputDiscipline" placeholder="Job Field/Discipline" OnTextChanged="inputDiscipline_TextChanged" AutoPostBack="True"></asp:TextBox>
</div>
</div>
<div class="form-group" id="contractGroup" runat="server">
<label for="inputContract" class="col-sm-5 control-label">Contract Type <b>*</b></label>
<div class="col-sm-7">
<asp:TextBox runat="server" type="text" class="form-control" ID="inputContract" placeholder="Contract Type" AutoPostBack="True" OnTextChanged="inputContract_TextChanged"></asp:TextBox>
</div>
</div>
这里是一些我想要保持焦点的 html 对象,我被困了半天,如果有人能给我粗略的指导如何在回发后保持焦点,我将永远感激不尽。
【问题讨论】:
-
您是否熟悉
if(IsPostBack),您能否在 Page_Load` 上执行SomeControl.Focus(),前提是它位于条件语句的回发部分中。此代码对您的问题没有任何帮助,也显示您的 .cs 代码隐藏,如果您确定要在触发/触发特定事件时设置焦点,我也会在__DoPostBack()方法中执行此操作.. -
我很好奇你为什么在每个 TextChanged 上回发到服务器。这对最终用户来说真的很烦人。
-
@Win 用于数据验证,我可能只需要几个回帖就可以侥幸逃脱,但我仍然会放松对这些领域的关注,为什么最终用户会感到烦恼?
-
@DJKRAZE 我熟悉 IsPostBack。我已经尝试过你的建议,但我需要知道当前的焦点对象,据我所知,没有办法将当前的焦点存储在服务器端,在回发时恢复它。我可以将焦点存储在 textChanged 事件上,但是当对象失去焦点并存储失去焦点的对象而不是获得焦点的新事件时,就会发生这些事件。最终结果:每次切换到新文本框时,都会发生 autoPostBack,并且焦点会跳转到上一个文本框,因为它是存储焦点的文本框。
标签: javascript c# jquery html asp.net