<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl1.ascx.cs" Inherits="默认按钮方法_WebUserControl1" %>
<div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <br>
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <br>
    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
    <br>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="默认按钮方法_WebUserControl2" %>
<div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <br>
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <br>
    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
    <br>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div><%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserContro3.ascx.cs" Inherits="默认按钮方法_WebUserContro3" %><div id="<%= this.ID %>">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <br>
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <br>
    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
    <br>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
 <script type="text/javascript">
    var inputs = document.getElementById('<%= this.ID %>').getElementsByTagName("input");
    for(i=0;i<inputs.length;i++)
    {
        inputs[i].onkeyup = function(){if(event.keyCode==13){document.getElementById('<%= Button1.ClientID %>').click();} }
    }
</script>以上是我想实现在哪个用户控件里面点回车的时候指定哪个按钮提交的
但是这里当按下回车的时候inputs[i].onkeyup 好像不执行 直接提交了页面的默认按钮了大家看看要怎么改谢谢

解决方案 »

  1.   


    function document.onkeydown() 
            { 
            var e=event.srcElement; 
            if(event.keyCode==13) 
            {
                document.getElementById('<%= Button1.ClientID %>.click();
            }这样也不行么
      

  2.   

    当然了
    DisableAutoPost = function()
    {
    if(window.event.keyCode == 13){
    window.event.keyCode = 0;
                            //Todo:your function
    }
    }就是首先要禁止系统默认的回车提交
    然后再判断自己提交
    这个用在onkeydown
      

  3.   

    我也感觉是 系统默认提交的地方有问题
    那atdream你的这条放在什么地方呢
    我放在页面中好像没有反应谢谢
      

  4.   

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>
    无标题页
    </title></head>
    <body>
        <form name="form1" method="post" action="Default.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJOTk1MzI0NzcxZGT+rcTOwQg1cpmXja466XBuPF0Ixg==" />
    </div>    <div>
        </div>
      
        
    <div>
        <input name="WebUserControl21$TextBox1" type="text" id="WebUserControl21_TextBox1" />
        <br>
        <input name="WebUserControl21$TextBox2" type="text" id="WebUserControl21_TextBox2" />
        <br>
        <input name="WebUserControl21$TextBox3" type="text" id="WebUserControl21_TextBox3" />
        <br>
        <input type="submit" name="WebUserControl21$Button1" value="Button" id="WebUserControl21_Button1" />
    </div>    
    <div>
        <input name="WebUserControl31$TextBox1" type="text" id="WebUserControl31_TextBox1" />
        <br>
        <input name="WebUserControl31$TextBox2" type="text" id="WebUserControl31_TextBox2" />
        <br>
        <input name="WebUserControl31$TextBox3" type="text" id="WebUserControl31_TextBox3" />
        <br>
        <input type="submit" name="WebUserControl31$Button1" value="Button" id="WebUserControl31_Button1" />
    </div>      <div id="WebUserControl1">
        <input name="WebUserControl1$TextBox1" type="text" value="d" id="WebUserControl1_TextBox1" />
        <br>
        <input name="WebUserControl1$TextBox2" type="text" value="ddd" id="WebUserControl1_TextBox2" />
        <br>
        <input name="WebUserControl1$TextBox3" type="text" value="dkdfd" id="WebUserControl1_TextBox3" />
        <br>
        <input type="submit" name="WebUserControl1$Button1" value="Button" id="WebUserControl1_Button1" />
    </div> <script type="text/javascript">
        var inputs = document.getElementById('WebUserControl1').getElementsByTagName("input");
        for(i=0;i<inputs.length;i++)
        {
            inputs[i].onkeydown = function(){if(event.keyCode==13){document.getElementById('WebUserControl1_Button1').click();} }
        }
        
        DisableAutoPost = function() 
        { 
            if(window.event.keyCode == 13)
            { 
                window.event.keyCode = 0;                         
            } 
        } </script>
        
    <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWDQKWxsuqBALJqe7/CgLKqe7/CgLLqe7/CgK4gYasCgK49MjuCwK59MjuCwK69MjuCwLd6MmJBQLAuvGfDwLAuq2xCQLAuplWAoyB4/QJM94w5otFt+24M8pkWU1z3Yt2Vmc=" />
    </div></form>
    </body>
    </html>
      

  5.   

    我要实现的就是在每一个DIV里面点击回车的时候都是去执行他DIV里面对应的按钮的提交事件
    而不是页面的默认按钮的事件谢谢
      

  6.   

    我记得我在你第一帖中发了一个例子.不知道你看没看.其实那段脚本我是写在用户控件里的.然后你再加一个判断即可.判断获取的input id中含有你用户控件的名字.
      

  7.   

    把这段脚本写在你的控件内应该就行了.<script type="text/javascript">
        var inputs = document.getElementsByTagName("input");
        for(i=0;i<inputs.length;i++)
        {
            debugger
            if(inputs[i].id.indexOf('<%=this.ClientID %>')!=-1)
            {
                inputs[i].onkeyup = enter;
            }
            
        }
        
        function enter(){
            if(event.keyCode==13)
            {
                document.getElementById("<%=Button1.ClientID %>").click();
            }   
        }
    </script>
      

  8.   

    RE:
    把这段脚本写在你的控件内应该就行了. JScript code
    <script type="text/javascript">
        var inputs = document.getElementsByTagName("input");
        for(i=0;i<inputs.length;i++)
        {
            debugger
            if(inputs[i].id.indexOf('<%=this.ClientID %>')!=-1)
            {
                inputs[i].onkeyup = enter;
            }
            
        }
        
        function enter(){
            if(event.keyCode==13)
            {
                document.getElementById("<%=Button1.ClientID %>").click();
            }   
        }
    </script>
    ------------------------------
    问题就是他不会执行event.keycode==13就直接提交 了RE:
    我测试了,你的代码是对的 但是,他在模拟单击了你规定的按钮后还是会去单击默认的按钮 所以你要做的只是 禁止系统默认的回车提交
    ------------------------------
    我也知道他执行了默认按钮,但要怎么来禁止呢谢谢
      

  9.   

    问题就是他不会执行event.keycode==13就直接提交 了 
    =======
    怎么可能不执行?你按别的键是不会提交的.我都测过了.
      

  10.   

    RE:
    问题就是他不会执行event.keycode==13就直接提交 了 
    ======= 
    怎么可能不执行? 你按别的键是不会提交的.我都测过了.
    ----------------------------------------------
    能不能把HTML发过来看看谢谢
      

  11.   

    用户控件代码:<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <div style="display:none">
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </div><script type="text/javascript">
        var inputs = document.getElementsByTagName("input");
        for(i=0;i<inputs.length;i++)
        {
            debugger
            if(inputs[i].id.indexOf('<%=this.ClientID %>')!=-1)
            {
                inputs[i].onkeyup = enter;
            }
            
        }
        
        function enter(){
            debugger
            if(event.keyCode==13)
            {
                alert('d');
                document.getElementById("<%=Button1.ClientID %>").click();
            }   
        }
    </script>我略了一个问题..当你在textbox上按回车的时候可能默认会是那一个button,
    所以页面postback了.
    我的用户控件是把那个button给style.display=none了.所以没有这个问题.我帖出代码你看一下
      

  12.   

    引用用户控件的aspx页<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default14.aspx.cs" Inherits="Default14" %>
    <%@ Register Src="WebUserControl.ascx" TagName="WebUserControl" TagPrefix="uc1" %><!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 runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <uc1:WebUserControl id="WebUserControl1" runat="server">
            </uc1:WebUserControl>
           
        </form>
    </body>
    </html>
      

  13.   

    最终客户生成的html<!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><title>
    Untitled Page
    </title></head>
    <body>
        <form name="form1" method="post" action="Default14.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTMwMjA1NjQwNGRkREmxoa7FwIMJQA9vB6NCneIIYsc=" />
    </div><div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBALW6OrODALAuvGfDwLAuq2xCQKMgeP0CaXGzL/G7OkZ7A/W9ZXkdI1mGms7" />
    </div>
            <input name="WebUserControl1$TextBox1" type="text" id="WebUserControl1_TextBox1" /><br />
    <input name="WebUserControl1$TextBox2" type="text" id="WebUserControl1_TextBox2" />
    <div style="display:none">
    <input type="submit" name="WebUserControl1$Button1" value="Button" id="WebUserControl1_Button1" />
    </div><script type="text/javascript">
        var inputs = document.getElementsByTagName("input");
        for(i=0;i<inputs.length;i++)
        {
            debugger
            if(inputs[i].id.indexOf('WebUserControl1')!=-1)
            {
                inputs[i].onkeyup = enter;
            }
            
        }
        
        function enter(){
            debugger
            if(event.keyCode==13)
            {
                alert('d');
                document.getElementById("WebUserControl1_Button1").click();
            }   
        }
    </script>&nbsp;       
        </form>
    </body>
    </html>
      

  14.   

    RE:lovehongyun 
    -------------
    你忽略了几个问题
    首先你这个是一个用户控件
    而我的是N个用户控件
    而且用户控件里面可能有N个按钮
    再者按钮是不是级Display=none掉的我先试试谢谢
      

  15.   

    楼上的好像可以
    但是在
    FireFox里面就不行了
      

  16.   


    几个用户控件无所谓吧.因为你是
    document.getElementById("<%=Button1.ClientID %>").click();
    if(inputs[i].id.indexOf('<%=this.ClientID %>')!=-1)最后生成的元素都会加一个控件的前缀的.所以应该不受影响
    就如你生成后的就是document.getElementById("WebUserControl1_Button1").click();这样的你的不执行event.keyCode==13可能是因为回车默认就是ie上的那个按钮.所以他提交了.没有执行脚本.如果把按钮display=none的话.肯定就不是默认的了.所以可以执行.