代码之家  ›  专栏  ›  技术社区  ›  Pierre Buyle

在输入[duplicate]中按enter键时,如何防止WebKit浏览器提交表单

  •  0
  • Pierre Buyle  · 技术社区  · 17 年前

    当使用具有多个文本输入的表单时,WebKit/Safari/Google Chrome会在任何输入元素中按下“enter”时提交表单。即使没有提交输入元素和 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请求的表单,所以需要防止这种行为。我可以为 按键 事件 停止传播 . 但当动态添加新的文本输入元素时,它看起来很难看,也不实用。

    3 回复  |  直到 17 年前
        1
  •  5
  •   Daniel A. White    17 年前

    倾听声音 onsubmit 事件的形式和返回 false

        2
  •  4
  •   bobince    17 年前

    如果您不希望表单提交,请不要包含<表格>元素。包含独立的表单字段元素是有效的。

    value="<?=$_POST['foo']?>"
    

        3
  •  1
  •   Jason Plank Maksim Kondratyuk    15 年前

    Daniel A.White是对的,但由于我对答案有点困惑,也许应该明确指出,返回false应该出现在事件中:

    function goWithSubmit(e)
    {
      if (e) e.returnValue=false;
    }