在 ASP.NET 中提交后如何设置文本框的焦点

6

我有一个位于UpdatePanel中的文本框。当用户输入内容时,我从数据库中获取相关数据并填充到另一个文本框中。我的问题是,在自动回发后,任何一个文本框都会失去焦点。我该如何使用JavaScript或代码来解决这个问题,因为我已经都尝试过了。

 System.Web.UI.ScriptManager.GetCurrent(this).SetFocus(this.txtReference);

当涉及到IT技术时,除了JavaScript之外,我还发现了另一个。

    <script type="text/javascript">
    var postbackElement;
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequest);
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoaded);


    function beginRequest(sender, args) {
        postbackElement = args.get_postBackElement();
    }


    function pageLoaded(sender, args) {
        var updatedPanels = args.get_panelsUpdated();
        if (typeof (postbackElement) === "undefined") {
            alert('if Loop');
            return;
        }
        else if (postbackElement.id.toLowerCase().indexOf('button1') > -1) {
        alert('else');
            for (i = 0; i < updatedPanels.length; i++) {

                document.getElementById('<%= txtAcctNo.ClientID %>').focus();
            }
        }


    }
</script>

但不能工作,因为'button1未定义'。我之前在aspx页面上使用了OnTextChanged=""的事件。

所以请通过代码或javascript帮助我完成这个问题。


请查看此问题,可能存在类似情况:http://stackoverflow.com/questions/2690766/set-focus-on-textbox-after-postback - dgarbacz
我之前看到了你的参考资料,但对我没有用 :( - A.Goutam
1个回答

12

我建议您尝试使用服务器端的SetFocus方法

Page.SetFocus(IdOfControl);

1
很高兴能帮助你,查克·诺里斯。 - Aghilas Yakoub
问题在于,如果页面很长并且该文本框位于中间某个位置,这将使页面移动,以便文本框位于可见页面的最低部。 这不是我们想要的行为 - 部分页面更新是为了保留页面上的所有其他内容,特别是页面上的滚动位置。 - user4843530

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接