通过jQuery在另一个表单提交事件中提交表单

时间:2018-02-23 10:44:58

标签: jquery ajax html5 form-submit

我在一个页面上有两个表单。当我点击父窗体的提交按钮时,调用父窗体提交事件,我在编写逻辑的同时借助提交方法提交第二种窗体(见下面的代码)。问题是当第二个表单提交方法被调用时,它会在提交父表单之前自动重新加载页面。

<script type="text/javascript">
$(document).ready(function () {
    $("#aspnetForm").submit(function(event) {               
        debugger;
        var marketoForm = MktoForms2.allForms()[0];
        console.log(marketoForm);
        marketoForm.addHiddenFields({
        //These are the values which will be submitted to Marketo
        "Email": $('#MainContentPlaceHolder_C003_ctl00_ctl00_C006_ctl00_ctl00_textBox_write').val(),
        "FirstName": $('#MainContentPlaceHolder_C003_ctl00_ctl00_C001_ctl00_ctl00_textBox_write').val(),
        "LastName": $('#MainContentPlaceHolder_C003_ctl00_ctl00_C005_ctl00_ctl00_textBox_write').val(),
        "Phone": $('#MainContentPlaceHolder_C003_ctl00_ctl00_C012_ctl00_ctl00_textBox_write').val(),
        "MarketoSocialGender": $('#MainContentPlaceHolder_C003_ctl00_ctl00_ctl06_C051_ctl00_ctl00_dropDown').val()
        });             
        marketoForm.submit();
        return false;
    });
});
</script>

Html如下 -

<form method="post" action="./physical-therapy-test-by-rahul" id="aspnetForm">
    <form id="mktoForm_15528"></form>
</form>

有人可以帮助我的页面重新加载吗?如何在提交唯一的第一张表格时提交两份表格?

1 个答案:

答案 0 :(得分:0)

您不能拥有多个嵌套的表单。提交marketo表单时,它会发布内部表单,并将回发到服务器,除非您正在捕获表单提交。但是,您添加到内部表单的任何内容都可以通过外部表单获得。如果marketoForm.addHiddenFields()方法添加了附加输入字段,则这些字段也可以在asp.net表单中使用,这意味着内部表单可以只是添加内容的DIV。

由于字段是动态添加的,因此需要通过服务器上的Request.Form("Email")获取值。

ASP.NET Web窗体有一些ASP.NET MVC消除的限制;我不知道这是否是另一种可能性。或者,如果您可以通过AJAX提交内部表单,然后触发一个帖子到外部FORM,这可能有用(加上内部表单不需要是<FORM>标签,但是div seledized在$.ajax电话中)作为另一种选择,但我不知道情况是否可行。