【发布时间】:2010-10-19 14:21:28
【问题描述】:
当使用具有许多文本输入的表单时,WebKit/Safari/Google Chrome 会在任何输入元素中按下“输入”时提交表单。即使没有提交输入元素,也没有注册 onclick 处理程序。
例如看这个示例代码:
<html>
<body>
<form method="POST" action=".">
<ul>
<li><input type="text" name="foo" value="<?=rand()?>"/></li>
<li><input type="text" name="bar" value="<?=$_POST['foo']?>"/></li>
</ul>
</form>
</body>
</html>
当在两个文本输入元素中的任何一个中按下回车键时,表单被提交。
由于我在 JavaScript 中使用异步 HTTP 请求处理表单,因此我需要防止这种行为。我可以将 keypressed 事件的自定义处理程序注册到 preventDefault 和 stopPropagation 。但是当动态添加新的文本输入元素时,它看起来很丑陋并且不太实用。
【问题讨论】:
标签: html safari google-chrome webkit submit