为何无法提交未呈现的表格?

时间:2018-04-24 04:20:48

标签: javascript jquery forms post

有没有办法提交未呈现的form

我有特定的场景,我想向服务器提交动态表单。截至目前,我已使用form创建body后向jQuery添加了in memory。它完美无缺,但我想知道为什么我无法提交form DOM而无法呈现var action_url = "/post-url"; $(` <form action=${action_url} method="POST"> <input type="text" value="name1" name="name1"/> <input type="text" value="name2" name="name2"/> <input type="text" value="name3" name="name3"/> </form> `).appendTo('body').submit();

以下是我尝试过的代码段:

var action_url = "/post-url";
$(`
  <form action=${action_url} method="POST">
    <input type="text" value="name1" name="name1"/>
    <input type="text" value="name2" name="name2"/>
    <input type="text" value="name3" name="name3"/>
  </form>
`).submit();

所以,为什么我不能这样做:

Sub colortest()
    Dim MyPage As Range, currentCell As Range

    With Sheets(2).Rows(1)
        Set t = .Find("Cut Date", lookat:=xlPart)
        Set A = Columns(t.Column).EntireColumn

        For Each currentCell In A
            If Not IsEmpty(currentCell) Then
                Select Case Not IsDate(currentCell.Value)
                    Case 1
                        currentCell.Interior.Color = 56231
                End Select
            End If
        Next currentCell
    End With
End Sub

当我运行上面的代码时,在控制台中收到以下警告消息:

  

表单提交已取消,因为表单未连接

2 个答案:

答案 0 :(得分:3)

当我们尝试将元素插入到文档中时,它会在附加到文档之前创建一些由文档片段缓存的DOM节点。由文档片段 CAN 缓存的节点注册事件处理程序,并且 CAN 也会被触发,但submit()的算法会有所不同。

文档片段中的DOM节点是 活动文档树结构的一部分,并且根据HTML standard documentation,如果表单未连接(关联,创建或任何其他类似术语)到浏览上下文(文档),提交过程将被取消。

进一步阅读:

Form submission algorithm

DocumentFragment

答案 1 :(得分:0)

表单应该在提交之前在DOM上,因为在加载页面之后,每个元素都附加了一个事件,因此被DOM识别并且jquery或javascript可以操作。但是你在做什么(第二个)甚至不存在于DOM中,所以事件submit()不可用。