Html 按键事件请求时。表单获取空值

Html 按键事件请求时。表单获取空值,html,internet-explorer,asp-classic,vbscript,Html,Internet Explorer,Asp Classic,Vbscript,我有一个经典asp的登录页面,其中包含两个按钮登录和注册。我还有一个隐藏的提交按钮。在表单提交中,我正在检查 if request.form(submit)=登录 然后登录步骤 else请求。表单(注册)=注册 它在所有浏览器中都可以正常工作,但在IE中,当我按enter键时,它会保留请求。表单(提交)=登录和请求。表单(注册)=注册,但当我单击enter按钮时,它可以正常工作。你知道为什么我没有收到任何请求吗?表单(提交)=登录。问题非常基本和基本:Internet Explorer没有“默认

我有一个经典asp的登录页面,其中包含两个按钮登录和注册。我还有一个隐藏的提交按钮。在表单提交中,我正在检查 if request.form(submit)=登录

然后登录步骤

else请求。表单(注册)=注册


它在所有浏览器中都可以正常工作,但在IE中,当我按enter键时,它会保留请求。表单(提交)=登录和请求。表单(注册)=注册,但当我单击enter按钮时,它可以正常工作。你知道为什么我没有收到任何请求吗?表单(提交)=登录。

问题非常基本和基本:Internet Explorer没有“默认”提交按钮。每个浏览器都可以自由选择在通过ENTER键提交表单时的行为方式,现代浏览器选择发送第一个提交按钮的值的逻辑方式(就像它被单击),而IE作为IE,则选择不友好的方式。除非你碰巧为IE编写了代码,否则就不会有任何意外,也没有办法解决这个“问题”的根源

解决这个问题的唯一方法是使用JavaScript,并在按ENTER键时强制浏览器选择特定的提交按钮。为此,首先将唯一ID添加到登录按钮:

<input type="submit" name="submit" value="login" id="btnLogin" />
这将模拟在表单中按下ENTER时单击登录按钮

这种方法唯一的缺点是,如果您的表单包含
,在表单中按ENTER键也会提交表单,这不是一件好事。要让他们表现出应有的行为,请将以下内容添加到每个人:

<textarea onkeypress="event.cancelBubble = true;">

上述操作将取消向上冒泡至按键事件的事件

<textarea onkeypress="event.cancelBubble = true;">