当用户输入一个值并按时,为什么只有<form>一个<input>字段的a会重新加载表单Enter,而如果其中有2个或更多字段,则<form>为什么没有?
<form>
<input>
Enter
我写了一个简单的页面来测试这种奇怪的情况。
如果您以第二种形式输入值并按Enter键,您会看到它重新加载了通过输入值的页面,就像您调用一样GET。为什么?以及如何避免呢?
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>
这是一个鲜为人知的“ Quirk”,已经问世了一段时间。我知道有人以各种方式解决了它。
在我看来,最简单的绕过方法就是简单地将第二个输入显示给用户。并非在后端授予所有这些用户友好的功能,它确实可以解决问题。
我应该注意,我听说此问题的最常见的地方是IE,而不是FireFox或其他。尽管它似乎确实也会影响到他们。