2010-07-30 70 views
0

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

下面是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"]; 
     } 
    } 
} 

回答

1

向文档的​​事件添加事件处理程序。在评论中的解释。

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); 
    } 
+0

谢谢,您的解决方案可行! – George2 2010-07-30 15:05:30

2

如果从的Internet Explorer浏览这是一个烦人的问题。添加一个样式为display:none;visibility:hidden;的文本框回车键会做出适当的回应。这通常发生在IE中具有一个文本输入的表单上。在您的第一个输入字段下添加如上所述的隐藏文件

+0

感谢RandomNoob,有没有任何现有的示例代码?这是我第一次执行这样的事情。 – George2 2010-07-30 14:45:58

+1

将它放在第一个文本框 – kd7 2010-07-30 14:55:38