【发布时间】:2010-03-03 08:02:19
【问题描述】:
使用 IE 7、JDK 1.6 和 Sun Web 服务器 7。
在 jsp 表单中,我们有:
<input type="text" name="id" maxlength="20" />
<input ... type="submit" name="send" value="Send"/>
即一个文本框和一个“提交”按钮(称为发送)。
并且 servlet 具有:
if (request.getParameter("send") != null && request.getParameter("send").trim().length() > 0) { ... }
使用Fiddler和IE,我们可以看到当我们填充id文本框并回车时发送了以下内容:
id=123456
但是,使用 Fiddler 和 IE,当我们填充 id 文本框并点击发送按钮时,我们可以看到发送了以下内容:
userId=123456&send=发送
最终结果是按下 Enter 键实际上什么也没做。
在其他 jsp 页面上,例如我们有:
<input type="text" name="id" maxlength="20" />
<input ... type="submit" name="submitId" value="Submit"/>
并且 servlet 具有:
if (request.getParameter("submitId") != null && request.getParameter("submitId").trim().length() > 0) { ... }
使用 Fiddler 和 IE,我们可以看到两种情况都发送了以下内容:
id=123456&submitId=提交
所以在我们看来,该行为仅在 IE 上显示“提交”按钮不称为“提交”的表单?
在 Firefox 3.6 上重新运行测试表明行为是正确的,并且在两种情况下都是相同的。
对于让 IE 正常工作有什么建议吗?
(注意:我已经搜索过类似的问题,但与此相关的问题主要与 ASP 相关!)。
【问题讨论】:
-
将来,当遇到浏览器特定的问题时(即在浏览器 X 中工作,但在浏览器 Y 中工作),那么它几乎是一个纯粹的客户端问题。然后,第一步是完全从故事中排除服务器端技术,只使用“普通的”HTML 文件。如果省略表单操作和方法,默认情况下会提交给 self,请求参数将在 URL 中显示为查询字符串。这更容易调试:)
-
@nzpcmad: 请检查表单是否有多个“输入类型='提交'”。
-
当同一个表单中有多个 INPUT type=submit 时,按下回车会使用第一个 INPUT type=submit 提交表单,除非另一个 INPUT type=submit 具有焦点。当另一个 INPUT type=submit 具有焦点时,按 Enter 将使用该 INPUT type=submit 提交表单。
-
@Shashi Bhushan:不——肯定只有一个“input type='submit'”。
-
嗯,也许你误解了我评论的全部意义和/或错过了“调试”这个词? :o
标签: java html internet-explorer jsp