如何让html页面检测输入键按下?

时间:2010-07-30 14:36:07

标签: javascript .net

我正在使用VSTS 2008 + C#+。Net 3.5 + IIS 7.0 + ASP.Net来开发Web应用程序。 Web应用程序有一个名为default.aspx的aspx页面。而且我想实现当用户按下键盘输入键时效果与按钮“动作”相同的效果。任何想法如何实施?

这是default.aspx文件,

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
  <title></title> 
</head> 
<body> 

  <script type="text/javascript"> 
    function requery() { 
      var query = location.search.substring(1); 
      var pairs = query.split("&"); 
      var param1Value = document.getElementById("txtParam1").value; 

      url = "/Default.aspx?param1=" + param1Value; 
      for (var i = 0; i < pairs.length; ++i) { 
        var pair = pairs[i]; 
        if ((pair.indexOf("param1") != 0) && (pair.length > 0)) { 
          url += "&" + pair; 
        } 
      } 
      location.href = url; 
    } 
  </script> 

  <form id="form1" runat="server"> 
  <div> 
    <asp:TextBox ID="txtParam1" runat="server"></asp:TextBox> 
    <input type="button" value="Action" onclick="requery()" /> 
  </div> 
  </form> 
</body> 
</html> 

这是默认文件default.aspx.cs,

背后的代码
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            txtParam1.Text = Request.QueryString["param1"];
        }
    }
}

2 个答案:

答案 0 :(得分:2)

如果您正在浏览 Internet Explorer ,这是一个烦人的问题。添加样式为display:none;visibility:hidden;的文本框回车键将做出相应的响应。这通常发生在IE中具有一个文本输入的表单上。在您的第一个输入字段

下添加上面提到的隐藏的一个

答案 1 :(得分:1)

为文档的keydown事件添加事件处理程序。评论中的解释。

    function keydownHandler(e) {

        if (e.keyCode == 13) {  // 13 is the enter key

            requery();  // call your function.

            // alternately, give your button an id and used 
            // document.getElementById('myID').click();

            // prevent the browser from doing whatever it normally
            // does when you push the enter key.
            // (not tested for this situation, may need tweaking)
            if (e.preventDefault) {
                e.preventDefault(); // FF,chrome             
            }
            else {
                return false;       // IE
            }
        }
    }

    // register your handler method for the keydown event
    if (document.addEventListener) {
        document.addEventListener('keydown', keydownHandler, false);
    }
    else if (document.attachEvent) {
        document.attachEvent('onkeydown', keydownHandler);
    }