页面里form表单里面加了onsubmit="return false;" 按钮不执行后台方法了

黑桃貳 2011-08-23 04:57:01
页面有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" /><!--回发时触发新页面-->

 <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>
...全文
921 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
CalvinR 2011-08-26
  • 打赏
  • 举报
回复
学习了…………
黑桃貳 2011-08-26
  • 打赏
  • 举报
回复
谢谢各位了 还是没禁止掉 最后我用xhHTTP方式存储了。。。
黑桃貳 2011-08-25
  • 打赏
  • 举报
回复
还是不行啊 禁止不掉回车事件,该键盘码也不行
  • 打赏
  • 举报
回复
解决方法:

在<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 之类。

黑桃貳 2011-08-24
  • 打赏
  • 举报
回复
屏蔽回车键的 不行的
我还要用回车方法创建新控件行的
现在就是想在可以用回车的情况下 解决页面回发
或者是在可以用回车并把form的submit事件禁止了的情况下 可以用button提交 ..
salecn 2011-08-24
  • 打赏
  • 举报
回复
来学习一下,呵呵!
子夜__ 2011-08-23
  • 打赏
  • 举报
回复
可以屏蔽回车键 但是不能解决根本问题。
黑桃貳 2011-08-23
  • 打赏
  • 举报
回复
还是不行 我设了一个全局的var submit=0; 在执行回车事件里面submit++;

function CheckIsRepeat() {
if (++submit > 1) {
return false;
}
return true;
}

form中onsubmit="return CheckIsRepeat();"

结果点击按钮保存还是不执行。。
细嗅蔷薇 2011-08-23
  • 打赏
  • 举报
回复
js禁止回车提交页面
黑桃貳 2011-08-23
  • 打赏
  • 举报
回复
求各位大侠帮忙 在线等..
黑桃貳 2011-08-23
  • 打赏
  • 举报
回复
但是不加 onsubmit="retrun false;" 敲回车会触发 按钮的保存方法
黑桃貳 2011-08-23
  • 打赏
  • 举报
回复
如果form里面不加 onsubmit="return false;" 可以提交
细嗅蔷薇 2011-08-23
  • 打赏
  • 举报
回复
表单信息都提交不了
黑桃貳 2011-08-23
  • 打赏
  • 举报
回复
//返回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 + ",";
}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧