C# 在弹出窗口中设置文本框焦点

C# 在弹出窗口中设置文本框焦点,c#,asp.net,textbox,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();
}
它工作正常,但我正在尝试将焦点添加到它的顶部文本框中:

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();
}

我试着在弹出之前和之后放置焦点调用,但都没有效果。我做错了什么?如何修复它?

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

ClientScript.RegisterStartupScript(this.GetType(), "focus", 
"document.getElementById('" + this.addHoursInput.ClientID + "').focus();", true);
要在Windows窗体首次加载时聚焦文本框,只需将文本框的TabIndex设置为零(或窗体上任何控件的最低TabIndex)

显示表单时,它会自动聚焦索引最低的控件。请注意,如果您的文本框预先初始化为某些文本,则会选择整个文本

资料来源:


我还发现了一些东西:

textBox.Select();
textBox.Focus();
资料来源:


您可以使用下面的JavaScript代码,它确实需要一些调整以满足您的需要。
您可能需要在正文中加载一个onload并发送文本框的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>

检查=功能(发送器){
如果(发送方){
警惕(“检查”);
focus();
}
}



最后一件可能对您有帮助的事情:

为什么不尝试在单击后使用javascript执行此操作?调用后加载页面时,焦点在哪里?也许您还有其他一些代码(服务器端或客户端)在调用后设置焦点。您的代码对我来说应该可以使用。谢谢,但我正在使用asp.net,并且Select不是有效的调用。@DavidTunnell我添加了一些(可能的)解决方案我得到了相同的结果,由于某种原因没有焦点=\n什么浏览器和版本?您是否尝试过在浏览器中查看dev工具中的控制台以查看它是否生成错误?