-1

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

然后登录步骤

否则 request.form(signup) = 注册

它在所有浏览器中都可以正常工作,但是在 IE 中,当我按下回车键时,它会避开 request.form(submit) = login 和 request.form(signup) = signup 但是当我点击回车按钮时它可以正常工作。知道为什么我在 request.form(submit) = login 上一无所获。

4

1 回答 1

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>按键事件的事件。

于 2013-01-13T08:41:18.857 回答