弹出窗口中的文本框焦点

时间:2014-02-05 18:53:54

标签: c# asp.net textbox

我有一个按钮,当点击时会产生一个模态弹出窗口:

protected void addHoursButton_OnClick(object sender, EventArgs e)
{
    Button btn = sender as Button;
    var addHoursPopup = btn.FindControl("addHoursPopup") as ModalPopupExtender;
    addHoursPopup.Show();
}

它工作正常,但我正在尝试将焦点添加到其中的顶部文本框中:

protected void addHoursButton_OnClick(object sender, EventArgs e)
{
    Button btn = sender as Button;
    var addHoursPopup = btn.FindControl("addHoursPopup") as ModalPopupExtender;
    addHoursPopup.Show();

    var addHoursInput = btn.FindControl("addHoursInput") as TextBox;
    addHoursInput.Focus();
}

我尝试在弹出窗口之前和之后放置焦点调用无效。我做错了什么,如何解决?

2 个答案:

答案 0 :(得分:2)

  

要在Windows窗体首次加载时聚焦TextBox,只需将TextBox的TabIndex设置为零(或窗体上任何Control的最低TabIndex)。

     

显示表单时,它会自动使用最低TabIndex聚焦Control。请注意,如果使用某些文本预先初始化TextBox,则将选择整个文本。

来源:http://www.csharp411.com/c-focus-textbox-on-form-load/


我找到的其他东西:

textBox.Select();
textBox.Focus();

来源:https://stackoverflow.com/questions/12686836/focus-on-textbox-does-not-work


您可以使用下面的JavaScript代码,它需要进行一些调整以满足您的需求 您可能需要在正文中加载并发送文本框的ID

<script type="text/javascript">
    check = function (sender) {
        if (sender) {
            alert("check");             
            sender.focus();
        }
    }
</script>
<asp:TextBox ID="txtTest" runat="server" onblur="check(this);"></asp:TextBox>

但更令我感兴趣的是对解决方案的评论:

  

同时我找到了一个解决方法,将焦点放在其他控件上,然后将焦点放在当前控件上。例如$(input).focus(); sender.focus();
  它对我有用

来源:https://stackoverflow.com/questions/9910968/set-focus-on-textbox-using-javascript


可能对您有帮助的最后一件事:http://www.beansoftware.com/ASP.NET-Tutorials/Focus-ASP.NET.aspx

答案 1 :(得分:1)

您可以从代码隐藏中注册对javascript的调用以设置焦点。将此代码放在OnClick方法中:

ClientScript.RegisterStartupScript(this.GetType(), "focus", 
"document.getElementById('" + this.addHoursInput.ClientID + "').focus();", true);