我创建的网站大约有20~左右的asp:TextBox,所有这些都使用了回发。 我遇到的问题是,每次回发发生时,文本框都会失去焦点。 我已经设法将注意力集中在称为回发的元素上,但这不是我想要的,因为那时候新的盒子就集中了。 我发现很少有javascripts应该在回发后保留焦点,但是无法单独使用其中一个。 老实说,我不太了解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对象,我坚持了半天,如果有人能给我粗略指导如何在回发后保持专注,我会永远感激。
答案 0 :(得分:3)
我认为没有直接保留焦点的简单方法,但您可以添加隐藏字段并将活动元素发布到其中:
让我们说隐藏字段的ID是&#34; hdnSelectedField&#34;。应该工作。
使用JQuery:
<asp:HiddenField ID="hdnSelectedField" runat="server" ClientIDMode="Static" />
<script>
// this creates an event that fires any time any "input" type element gets focus
$("input").focus(function (e) {
// get the target's type attribute (i.e. text, button, checkbox) and make sure it isn't submit
if ($(e.target).attr('type') != 'submit') {
// get the currently focused element's id & store it in the hidden field for postback processing
var activeElem = document.activeElement.name;
$("#hdnSelectedField").val(activeElem);
// this just makes it obvious that something is happening. Set a <span> to the field's id
$("#selectedElementName").html(activeElem);
}
});
</script>
页面加载:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
var fieldSelectedName = hdnSelectedField.Value;
if(!String.IsNullOrEmpty(fieldSelectedName))
Page.FindControl(fieldSelectedName).Focus();
}
}