一尘不染

为什么在输入中按下回车键时提交具有单个输入字段的表单

javascript

当用户输入一个值并按时,为什么只有<form>一个<input>字段的a会重新加载表单Enter,而如果其中有2个或更多字段,则<form>为什么没有?

我写了一个简单的页面来测试这种奇怪的情况。

如果您以第二种形式输入值并按Enter键,您会看到它重新加载了通过输入值的页面,就像您调用一样GET。为什么?以及如何避免呢?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>testFormEnter</title>
</head>
<body>
<form>
  <input type="text" name="partid2" id="partid2" />
  <input type="text" name="partdesc" id="partdesc"  />
</form>
  <p>2 field form works fine</p>
<form>
<input type="text" name="partid" id="partid"  />
</form>
<p>One field form reloads page when you press the Enter key why</p>
</body>
</html>

阅读 271

收藏
2020-05-01

共1个答案

一尘不染

这是一个鲜为人知的“ Quirk”,已经问世了一段时间。我知道有人以各种方式解决了它。

在我看来,最简单的绕过方法就是简单地将第二个输入显示给用户。并非在后端授予所有这些用户友好的功能,它确实可以解决问题。

我应该注意,我听说此问题的最常见的地方是IE,而不是FireFox或其他。尽管它似乎确实也会影响到他们。

2020-05-01