none
asp.net 在页面按回车执行服务端按钮的回车事件 RRS feed

  • 问题

  •  在登录后台的时候.当用户输入用户名和密码和验证码.不用点鼠标直接按回车就执行.我服务器段按钮事件Button
    想用js实现..在服务端.是  txtOk.Attributes.Add("onkeydown", "if(event.keyCode==13) {document.all." + this.LinkButton1.ClientID + ".click();}"); 实现. js怎么实现..按钮名就是txtOK
    不用羡慕----那,只是个传说!
    2009年2月24日 1:10

答案

  • 你的代码没有对方调用啊,下面是个完整的例子

    <%@ Page Language="C#" %> 
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
     
    <script runat="server"
     
     
      protected void LinkButton1_Click(object sender, EventArgs e) 
      { 
        Response.Redirect("http://dotnet.aspx.cc"); 
      } 
    </script> 
     
    <html xmlns="http://www.w3.org/1999/xhtml"
    <head runat="server"
      <title></title> 
     
      <script type="text/javascript"
        function KeyUp(flag) { 
          var ie = window.navigator.appVersion.indexOf('MSIE') != -1; 
          var evt = ie ? window.event : flag; 
          var ele = ie ? window.event.srcElement : flag.target; 
          if (evt.keyCode == 13) { 
            if (ie) { 
              evt.keyCode = 9; 
            } 
            if (ele.id == "txtverify"//如果最后一个焦点在验证码上 
            { 
              __doPostBack('<%=LinkButton1.ClientID %>', ''); 
            } 
          } 
        } 
      </script> 
     
    </head> 
    <body onkeydown="KeyUp(event)"
      <form id="form1" runat="server"
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:TextBox ID="txtverify" runat="server"></asp:TextBox> 
      <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">登录</asp:LinkButton> 
      </form> 
    </body> 
    </html> 
     


    孟宪会
    • 已标记为答案 极度 2009年2月26日 1:46
    2009年2月25日 9:28
    版主

全部回复

  • 按回车执行的是form的onsubmit,可以在客户端捕获这个事件然后给服务器端发请求。
    MSMVP VC++
    2009年2月24日 2:07
    版主
  • 你不是实现了吗?有什么问题吗
    孟宪会
    2009年2月24日 2:32
    版主
  • 我想在客户端用js实现.不再服务端写代码
    不用羡慕----那,只是个传说!
    2009年2月24日 4:13
  • 服务器代码总是要写的,不然怎么验证用户身份?
    MSMVP VC++
    2009年2月24日 4:46
    版主
  • 验证的代码我没说用js 我是说按回车就执行单击.不用我去鼠标操作.. 用js实现回车走button单击事件
    不用羡慕----那,只是个传说!
    2009年2月24日 5:05
  • DareOnly 说:

    我想在客户端用js实现.不再服务端写代码


    不用羡慕----那,只是个传说!

    不是太明白你的意思。
    你可以将onkeydown放在<body onkeydown="">里面,判断是在哪个地方按的event.srcElement(ie)或者evt.target来获得是在哪个对象上回车的,然后在执行。




    孟宪会
    2009年2月24日 5:42
    版主

  • 其实,txtOk.Attributes.Add这个方法是简单并且比较好的方法、不知道你还要达到什么目的
    孟宪会
    2009年2月24日 5:43
    版主
  • 我是在页面这么写的
        <script type="text/javascript">  
    <!--  
    function Enter()  
    {  
       if(event.keycode==13)  
       {  
           event.returnValue=false;  
           event.cancel=true;  
           document.getElementById("LinkOk").click();  
       }  
    }  
    --> 
    </script> 
     <asp:LinkButton ID="LinkOk" runat="server"  OnClick="LinkOk_Click" CssClass="bt">登 录</asp:LinkButton> 
    然后我在页面按回车没反映啊
    不用羡慕----那,只是个传说!
    2009年2月24日 6:34
  • 楼主你好

    也可以考虑通过设置Form的DefaultButton属性来满足这种需求:

    <%@ Page Language="C#" %> 
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     
    <script runat="server">  
     
        protected void LinkOk_Click(object sender, EventArgs e)  
        {  
            TextBox1.Text = "login";  
        }  
    </script> 
     
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title></title>  
     
     
    </head> 
    <body> 
        <form id="form1" runat="server" defaultbutton="LinkOk">  
        <div> 
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
            <asp:LinkButton ID="LinkOk" runat="server" OnClick="LinkOk_Click" CssClass="bt">登 录</asp:LinkButton> 
            <br /> 
        </div> 
        </form> 
    </body> 
    </html> 
     

    谢谢!
    blodfox777
    2009年2月24日 7:22
  • keycode是区分大小写的
    keyCode

    孟宪会
    2009年2月24日 9:59
    版主
  •  function KeyUp(flag)
        {
            if(event.keyCode == 13)
            {
               event.keyCode=9;
               //alert(event.srcElement.id);
               if (event.srcElement.id=="txtverify") //如果最后一个焦点在验证码上
               {
                   event.returnValue = false;
                   document.all("LinkOk").click(); //LinkOk:服务器按钮的id
               }
            }
        }//end function

    怎么在页面回车没反映那
    <body>
    <asp:LinkButton ID="LinkOk" runat="server" OnClick="LinkOk_Click" CssClass="bt" Width="100%">登 录</asp:LinkButton>
    不用羡慕----那,只是个传说!
    2009年2月25日 7:01
  • 建议你试试上面我的方案

    另外,不推荐使用document.all,因为Firefox是不支持的
    blodfox777
    2009年2月25日 9:04
  • 你的代码没有对方调用啊,下面是个完整的例子

    <%@ Page Language="C#" %> 
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
     
    <script runat="server"
     
     
      protected void LinkButton1_Click(object sender, EventArgs e) 
      { 
        Response.Redirect("http://dotnet.aspx.cc"); 
      } 
    </script> 
     
    <html xmlns="http://www.w3.org/1999/xhtml"
    <head runat="server"
      <title></title> 
     
      <script type="text/javascript"
        function KeyUp(flag) { 
          var ie = window.navigator.appVersion.indexOf('MSIE') != -1; 
          var evt = ie ? window.event : flag; 
          var ele = ie ? window.event.srcElement : flag.target; 
          if (evt.keyCode == 13) { 
            if (ie) { 
              evt.keyCode = 9; 
            } 
            if (ele.id == "txtverify"//如果最后一个焦点在验证码上 
            { 
              __doPostBack('<%=LinkButton1.ClientID %>', ''); 
            } 
          } 
        } 
      </script> 
     
    </head> 
    <body onkeydown="KeyUp(event)"
      <form id="form1" runat="server"
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:TextBox ID="txtverify" runat="server"></asp:TextBox> 
      <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">登录</asp:LinkButton> 
      </form> 
    </body> 
    </html> 
     


    孟宪会
    • 已标记为答案 极度 2009年2月26日 1:46
    2009年2月25日 9:28
    版主
  • LinkButton生成的标签在非IE下面有click()方法

    另外,最好这样写客户端的id  if (ele.id == "<%=txtverify.ClientID %>")

    孟宪会
    2009年2月25日 9:30
    版主