如何在回发后保持对asp文本框或任何html元素的关注

时间:2014-10-20 21:56:13

标签: javascript c# jquery html asp.net

我创建的网站大约有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对象,我坚持了半天,如果有人能给我粗略指导如何在回发后保持专注,我会永远感激。

1 个答案:

答案 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();
        }
    }
  • 编辑使用clientIDMode = static并在asp.net面板中工作。请注意,它现在按名称搜索。