【问题标题】:Handling the Enter Key with IF Statement使用 IF 语句处理 Enter 键
【发布时间】:2013-02-26 20:39:07
【问题描述】:

我正在开发一个使用 USB 条形码扫描仪的简单 ASP.NET C# 应用程序。我有一个详细信息视图,默认为插入,底部有一个提交按钮。当页面加载时,表单从 URL 中获取 ID 并将其输入到第一个字段,然后将光标焦点设置到第二个字段。

默认情况下,USB 扫描仪会输入它扫描的数字,然后按 Enter 键。我想在里面放一个处理程序,基本上是这样的:

  • 如果光标在 textbox2 中并按下 Enter 键,则将数据保留在 textbox2 并将光标移动到 textbox3。
  • 如果光标在 textbox3 中并按下 Enter 键,则将数据保留在 textbox3 并点击提交按钮。

这个想法是,用户可以连续扫描 3 或 4 个条形码,填写表单中的每个文本框,而无需 A) 每次都触发提交按钮,并且 B) 不必在扫描之前单击每个字段 (如果我禁用了 Enter 键)。

这是我的代码的开头,它从 URL 中获取 ID 并填充 textbox1,然后将焦点设置为 textbox2。

protected void DetailsView1_DataBound(object sender, EventArgs e)
    {
        if (DetailsView1.CurrentMode == DetailsViewMode.Insert)
        {
            if (!string.IsNullOrEmpty(Request.QueryString["id"]))
            {
                    TextBox tbox1 = DetailsView1.FindControl("TextBox1") as TextBox;
                    TextBox tbox2 = DetailsView1.FindControl("TextBox2") as TextBox;
                    if (tbox != null)
                    {
                        tbox.Text = Request.QueryString["id"].ToString();
                    }
                    SetFocus(tbox2);
            }
        }
    }

【问题讨论】:

  • textbox1 完成后,您不能检查一下当前哪个控件具有焦点并设置它吗?例如,如果tbox2 有焦点,SetFocus(tbox3)?

标签: c# asp.net


【解决方案1】:

但我认为输入流程已经有效,不是吗? 为什么不只使用 JQuery 为文本框添加流?

$('#TextBox1').keydown(function(e) {
   var code = (e.keyCode ? e.keyCode : e.which); // Crossbrowser fix
   if(code === 13) {          //If Enter keycode
     $('#TextBox2').focus(); // Set focus to second textbox
     e.preventDefault();     // Prevent that the enter does a submit
   }
});

如果输入流程不起作用,您可以为表单配置此项。

【讨论】:

  • 在我的例子中,textbox2 后面跟着 textbox3。当我扫描条形码时,textbox2 充满了数据,按下回车键并提交表单。它会一起跳过 textbox3。
  • 请记住,名称只是示例,您也可以将此示例用于 Textbox2 和 Textbox3 .. e.preventDefault 应防止执行 enter 的 keydown 并将焦点设置为您提供的命名文本框。为此,您需要认为我的示例中的 Textbox1 是 Textbox2,而 textbox2 是 Textbox3。但您可以自己编辑名称。
  • 我了解名称更改,我想我对代码中的位置感到困惑。做一些谷歌赋,但如果你知道你的头顶,将不胜感激。非常喜欢 jQuery。
  • 在您的 aspx 页面中,您需要在 head 标签中添加以下行以下载 Jquery。 标签位于 Jquery 脚本行下方的头部。明天我回答如果你有更多的问题..
  • 您好赞助商。再次感谢你的帮助。我需要从详细信息视图中调用该函数吗?或者只是将代码放在标题中会自动发生吗?仍然没有按预期行事。 Visual Studio 没有发现代码中的任何错误。
猜你喜欢
  • 2017-02-17
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2016-05-20
  • 2013-08-16
相关资源
最近更新 更多