页面有html控件 有服务器端控件; html控件有回车事件(出新一新控件行) ,但是敲回车会弹出新页面 并执行服务器控件的提交方法后来 加了ajax的UpdatePanel控件 不弹出新页面了但还执行服务器控件的提交方法; 网上搜了下说form表单只有一个input的原因 我又加了个隐藏的 <input id="htmlText" type="text" style="display:none" onkeypress="Keypress2(event)" />
但还是执行提交;
在form表单中加 <form id="form1" name="form1" runat="server" onsubmit="return false;" > 
但是现在点击提交按钮又不执行后台命令了;求大侠帮忙解决!!!代码:<head>
<script type="text/javascript" language="javascript">
 function Keypress2(event) { if (event.keyCode == 13) {addtr();}}
</script>
</head>
<body>
    <form id="form1" name="form1" runat="server" onsubmit="return false;" >
   
    <div style="width:820px; text-align:center;">       <div style="height:380px; width:820px; overflow:auto;text-align:center; padding-left:20px; ">
          <asp:HiddenField ID="names" runat="server"  />                       <table border="0" cellspacing="1" cellpadding="2" style="background-color: #FFFFFF; width:780px" id="repeaterTable"> 
                        <tr>
                           <td class="TableHead" style="width:410px;"><b style="color: white;">项目阶段名</b></td>
                           <td class="TableHead" style="width:80px;"><b style="color: white;">操作</b></td>
                        </tr>
                        <tr id="tr">
                           <td class="" style="width:410px;"><input class="PsName" type="text" id="textbox0" name="ProjectStageName1" onkeypress="javascript:Keypress2(event);" style="width:400px;" /><input id="Text0" type="text" style="display:none" onkeypress="Keypress2(event)" /></td>
                           <td><input type="button" id="Del" name="Deltr" class="input-button2" value="删除"  onclick="javascript:deleteTR2();" /><input id="Textdel0" type="text" style="display:none" onkeypress="deleteTR2()" /></td>
                        </tr>
                        </table>
                  
         </div>
        <input id="htmlText" type="text" style="display:none" onkeypress="Keypress2(event)" />
 <asp:ScriptManager ID="ScriptManager1" AsyncPostBackTimeOut= "36000 " runat="server">
    </asp:ScriptManager>
   
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <div id="div1" style="margin-left: 20px; margin-top: 10px; text-align: center; vertical-align:top;">
            <asp:Button ID="btn_save" runat="server" Text="保 存" class="input-button10"  OnClientClick="return GetAddInput()"  onclick="Button1_Click" /><!--回发时触发新页面-->
            
         &nbsp;<input type="button" onclick="Btn_Back();" value="关 闭" class="input-button10" id="Buttona2" /></div>
            
    </ContentTemplate>
        <Triggers>
    <asp:AsyncPostBackTrigger ControlID="btn_save" EventName="Click" />
    </Triggers>
    </asp:UpdatePanel>
    </div>
  
    </form>
</body>

解决方案 »

  1.   

    //返回Input信 息
           function GetAddInput() {
                var names = document.getElementsByName("ProjectStageName1");
                if (names.length == 0) {
                    alert("没有可用的信息!");
                    return false;
                }
                document.getElementById("names").value = "";
                for (var i = 0; i < names.length; i++) {
                    document.getElementById("names").value += names[i].value + ",";
                }
            }     
      

  2.   

    如果form里面不加 onsubmit="return false;"  可以提交
      

  3.   

    但是不加 onsubmit="retrun false;" 敲回车会触发 按钮的保存方法
      

  4.   

    还是不行 我设了一个全局的var submit=0; 在执行回车事件里面submit++;  function CheckIsRepeat() {
                if (++submit > 1) {
                    return false;
                }
                return true;
            }form中onsubmit="return CheckIsRepeat();"   结果点击按钮保存还是不执行。。
      

  5.   

    屏蔽回车键的 不行的
     我还要用回车方法创建新控件行的  
     现在就是想在可以用回车的情况下 解决页面回发  
    或者是在可以用回车并把form的submit事件禁止了的情况下 可以用button提交 ..
      

  6.   

    解决方法:在<form>里屏蔽:<form id="form1" runat="server" onkeypress="javascript:return NoSubmit(event);"><script type="text/javascript"> function NoSubmit(ev){    if( ev.keyCode == 13 )    {        return false;    }    return true;}</script> 传说中的解决方法:一、在<form>里指定defaultbutton,将其值赋以一个LinkButton的UniqueID。MSDN说:使用 DefaultButton 属性可以指定用户可通过在窗体的输入控件(如文本框)中按 Enter 来引起回发。除了 LinkButton 控件之外,可以将从 IButtonControl 接口派生的任何控件指定为默认按钮。如果 DefaultButton 属性所引用的控件不是从 IButtonControl 派生的,则会引发 InvalidOperationException 异常。如果使用母版页,并且从内容页中设置 DefaultButton 属性,请使用 IButtonControl 按钮的 UniqueID 属性。有关母版页的更多信息,请参见 ASP.NET 母版页概述。在以下情况下,DefaultButton 属性可能不会引起回发:·         当焦点在窗体中的输入控件外部时按下 Enter。默认的回发操作不一定会触发。·         当焦点在多行文本框内部时按下 Enter。在多行文本框中,按下 Enter 通常会在文本框中创建一个新行。在某些浏览器中,在多行文本框内按 Enter 会触发回发。在这种情况下,如果希望改成按下 Enter 时创建新行,可向输入控件附加一个 JavaScript 函数。该脚本应捕获 Enter 键并停止回发。例如,可以使用 Attributes 属性集合添加 onKeyPress 事件的客户端脚本。·         将 LinkButton 控件指定为默认按钮。只有 Button 和 ImageButton 控件是受支持的。·            在异步回发过程中以编程方式更改 DefaultButton 属性。通过将一个或多个 UpdatePanel 控件添加到页中,可以在页上启用异步回发。有关更多信息,请参见 UpdatePanel 控件概述和部分页呈现概述。 二、将键盘码变成别的,类似If( event.keyCode == 13) event.keyCode = 9 之类。
      

  7.   

    谢谢各位了 还是没禁止掉 最后我用xhHTTP方式存储了