【问题标题】:Handling Enter key on Web Forms处理 Web 表单上的 Enter 键
【发布时间】:2016-02-14 04:30:55
【问题描述】:

我已经在 Web 表单上工作了好几个月了,但是今天我遇到了一个问题。

我有例如Save 表单上有 2 个按钮。接下来,当用户填写表单并按下 Enter 时,它应该触发 SAVE 按钮。

我试过很多

this.Page.Form.DefaultButton = btnSave.UniqueID; 
this.Page.Form.DefaultFocus = btnSave.ClientID;

但是没有用。

请帮助我。我尝试了很多代码,但没有一个真正起作用。

protected void Page_Load(object sender, EventArgs e)
{
    // 2 lines of code, for setting Save as a default
    // button upon page loading so hitting Enter will
    // trigger SAVE button.
    this.Page.Form.DefaultButton = btnSave.UniqueID;
    this.Page.Form.DefaultFocus = btnSave.ClientID;

    if (Session.Count <= 0)
    {
        Response.Redirect("login.aspx");
    }

    lblMsgPopUp.Visible = false;
}

【问题讨论】:

  • 这对我来说是正确的,而且我已经能够让您的代码在 Chrome 和 Firefox 中运行。你得到什么具体的错误或问题?什么“没用”?
  • 当我点击文本框时,它会将焦点从保存按钮上移开。
  • 嗯,是的,这是意料之中的。在btnSave 上设置默认(即初始)焦点不会阻止焦点转移到文本框或单击的其他输入。按 Enter 时会发生什么?
  • 看,问题是我有 4 个文本框,例如我在第一个文本框中输入文本并意外按下回车而不是触发回车,我希望它仅在到达最后一个文本框时触发回车
  • 这假定第 4 个文本框始终是用户提供输入的最后一个文本框。听起来您最好在过早按下 Enter 时使用客户端验证来取消提交。

标签: asp.net webforms


【解决方案1】:

您拥有的代码很好。我在 Chrome 和 Firefox 中检查了它,以免仅仅阅读就错过任何内容。

如果您希望btnSave 仅在按下 Enter 时触发保存并且表单已完成,我建议使用客户端验证以确保表单完成,取消提交并提醒用户,如果不是等等。

如果您需要帮助,请参阅 another SO question 关于客户端验证和取消提交的信息。

【讨论】:

    猜你喜欢
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    相关资源
    最近更新 更多