在按键事件请求。形式为null

时间:2013-01-11 16:08:57

标签: html internet-explorer asp-classic vbscript

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

然后登录步骤

否则request.form(注册)=注册

它可以在所有浏览器中正常工作但在IE中我按下回车键它会esacpe request.form(submit)= login和request.form(注册)=注册但是当我点击输入按钮然后它工作正常。知道为什么我在request.form(submit)= login。

上什么都没得到

1 个答案:

答案 0 :(得分:0)

问题非常基础和基础:Internet Explorer没有“默认”提交按钮。每个浏览器都可以自由选择如何通过 ENTER 键提交表单,现代浏览器选择发送第一个提交按钮的值的逻辑方式(就像它被点击一样)而IE ,作为IE,选择不友好的方式。除非您碰巧为IE编写代码,否则毫无意外也无法修复此“问题”的根源。

唯一的解决方法是使用JavaScript和强制浏览器在按 ENTER 时选择特定的提交按钮。为此,首先在登录按钮中添加唯一ID:

<input type="submit" name="submit" value="login" id="btnLogin" />

现在将onkeypress处理程序添加到您的表单标记:

<form action="YourPage.asp" method="POST" onkeypress="if (event.keyCode === 13) { document.getElementById('btnLogin').click(); return false; }">

只要在表单内按 ENTER ,这将模拟单击登录按钮。

这种方法的唯一缺点是,如果您的表单包含<textarea>,则在其中按 ENTER 也会提交不是好事的表单。为了让它们按照应有的行为,将它们添加到每个行为中:

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

以上内容将取消事件从向上冒泡到<form>按键事件。