15

我试图让表单以迂回的方式提交,因为我需要它在提交之前附加新的输入。由于在实际的 $(form).submit() 函数中添加附加内容不会收集它们以进行发布,因此我添加了一个 html 按钮来调用 submitCheck(),然后提交实际函数。

function init() {
  $("#submit").click(submitCheck);
  //and lots of other stuff
}

function submitCheck() {
    //go through fabric canvases, save xml to input.
    for (var i=1; i<probNum; i++) {
        var csvg = gcanvas[i].toSVG();
        $('#output').append("<input type='hidden' name='svg"+probNum+"' value='"+csvg+"'></input>");
    }
    //make sure a topic was selected. If not cancel submission and don't do anything.
    if ($("#topic").val() == '-1') 
    {
        $('#error').html("You must select a valid topic");
    } else {
        //submit the form
        alert('should submit now');
        $("form:first").submit();
    }
}

但是......它失败了,抛出了类型错误:

TypeError: f[s] is not a function

我没有找到关于这个特定错误的文档。有任何想法吗?

4

1 回答 1

59

您的表单中有一些输入name="submit",它覆盖了form.submit在 jQuery 内部调用的本机(以编程方式提交表单)方法。您需要将其更改为其他名称。

请参阅文档中的附加说明段落。

您还可以使用DOMLint查看其他可能的冲突问题。

于 2012-10-31T22:15:28.147 回答