禁止回车提交表单

时间:2022-06-22 18:28:32

解决方法:

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