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

标签 javascript c# jquery html asp.net

我创建的网站有大约 20~ 左右的 asp:TextBox,它们都使用回发。 我遇到的问题是每次回发时文本框都会失去焦点。 我已经设法将注意力集中在称为回发的元素上,但这不是我想要的,因为到那时新框已成为焦点。 我发现很少有 javascript 应该在回发后保持焦点,但其中一个无法正常工作。 老实说,我不太了解 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 对象,我已经坚持了半天,如果有人能给我粗略的指导如何在回发后保持焦点,我将永远感激不已。

最佳答案

我认为没有直接保持焦点的简单方法,但您可以添加一个隐藏字段并将事件元素发布到其中:

假设隐藏字段的 ID 是“hdnSelectedField”。一个应该工作。

使用 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 面板中工作。请注意,它现在按名称搜索。

关于javascript - 如何在回发后保持对 asp 文本框或任何 html 元素的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475585/

相关文章:

c# - MVC4 捆绑缓存 header

c# - 使用字符串中的公钥验证 JWT

c# - Xaml 资源中的通用类型

javascript - Jquery .on 事件未在 Chrome 中触发

javascript - Uncaught ReferenceError : $ is not defined Error

javascript - 在 JavaScript 中创建全局唯一 ID

Javascript 文件或模块范围内的变量

javascript - 我可以命名一个 JavaScript 函数并立即执行吗?

javascript - 如何使用 FLOT 图表保存图例

javascript - 将点击事件绑定(bind)到 jqzoom 以启动 fancybox