如何使用JavaScript可靠地提交HTML表单?

pab*_*obm 18 html javascript forms

有没有办法使用JavaScript保证在所有情况下都可以使用?

我详细说明.常见的方法似乎是:

formElement.submit()
Run Code Online (Sandbox Code Playgroud)

这一切都很好,除了一件事.表单的字段可用作属性formElement,因此如果存在名称标识为 "text1" 的字段,则可以将其作为formElement.text1.

这意味着如果一个元素被称为"提交"(无论是它的名字还是它的id),那么formElement.submit()它将不起作用.这是因为formElement.submit不是表单的方法,而是具有该名称的字段.不幸的是,提交按钮具有"提交"名称或ID是相当普遍的.

两个例子来说明我的观点.首先,以下内容不起作用,因为表单的元素名称为"submit":

<form name="example" id="example" action="/">
  <button type="button" name="submit" onclick="document.example.submit(); return false;">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

以下将工作.唯一的区别是我从表单中删除了名称"submit":

<form name="example" id="example" action="/">
  <button type="button" onclick="document.example.submit(); return false;">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

那么,还有其他方法可以使用JavaScript提交HTML表单吗?

Jer*_*ome 32

在JavaScript中创建另一个表单,并将其submit()方法应用于原始表单:

<html>
    <script>
        function hack() {
            var form = document.createElement("form");
            var myForm = document.example;
            form.submit.apply(myForm);
        }
    </script>

    <form name="example" id="example" method="get" action="">
        <input type="hidden" value="43" name="hid">
        <button 
          type="button" 
          name="submit" 
          onclick="hack();return false;"
        >Submit</button>
    </form>
</html>
Run Code Online (Sandbox Code Playgroud)

form.submit是对新鲜和干净的提交方法的引用,然后您使用apply(myForm)原始表单执行它.