我在经典asp中有一个登录页面,其中包含两个按钮登录和注册。此外,我有一个隐藏的提交按钮。在表单提交我正在检查 if request.form(submit)= login
然后登录步骤
否则request.form(注册)=注册
它可以在所有浏览器中正常工作但在IE中我按下回车键它会esacpe request.form(submit)= login和request.form(注册)=注册但是当我点击输入按钮然后它工作正常。知道为什么我在request.form(submit)= login。
上什么都没得到答案 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>
按键事件。