问题摘要:Chrome需要在提交表单前两次点击“Enter”。
血淋淋的细节: 我有一张表格。它的行动是:
action="javascript: Search();"
我的表单中有一个文本输入。我在这个文本框中输入了一些内容。我按回车键。调用Search()。
Search()调用:
alert('A')
doPost(document.formName,'Search.php')
alert('B')
doPost(form,url)调用:
form.action=url
alert('C')
form.submit()
alert('D')
现在,问题。 FF弹出'A',然后'C',然后提交表格(耶!)。另一方面,Chrome弹出“A”,然后是“C”,然后是“D”,然后是“B”,但没有表单提交(Boo!)。然后,沮丧地,我在Chrome中再次点击“Enter”。 form.submit()被成功调用(没有任何弹出窗口)。
为什么Chrome首次尝试时未提交表单?
答案 0 :(得分:2)
我不确切地确定您的问题,但我怀疑您的代码应该重构为更标准的设置。
你的表格应该是......
<form action="Search.php" method="POST">
<input type="text" />
<!-- Blah blah whatever else is in here -->
<input type="submit" />
</form>
为什么javascript会全部参与?
仅供参考:这可能与您的问题有关。来自jQuery Submit doc
根据浏览器的不同,如果表单只有一个文本字段,或者只有存在提交按钮时,Enter键才会导致表单提交。除非通过观察按下Enter键的按键事件来强制解决问题,否则界面不应该依赖于此键的特定行为。
答案 1 :(得分:1)
你应该用分号结束每个javascript语句;
您没有使用任何分号来结束陈述。