多个表单的一个提交按钮。掌握保存策略,

时间:2014-10-09 09:10:47

标签: javascript jquery asp.net-mvc forms

下面的图片显示了我正在使用的html页面布局的简化。它有3个表单,每个表单都有自己的提交按钮,可以单独提交。在页面顶部" Master Save"位于。此按钮应保存所有3个表单。 saving strategy for multiple forms 每个表单都有submit()函数重载,它们看起来像这样:

    form1.submit(function () {
                Form1SubmitOverloaded(this);
            return false;
     });

    Form1SubmitOverloaded = function (form) {

            $.post(form.action, $(form).serialize(), function (data) {

            //DOM manipulation, etc/

            }).fail(function () {

                //error parsing etc.

            });

        return false;
    };

按下" Master Save"我想按顺序提交表单 1> 2>但我希望表格2等到表格1结束。

Form1已提交>> Form2已提交>> Form3已提交。

$('#masterSave').click(function () {

            $('#form1').submit();

            $('#form2').submit(); // wait until form1 ended

            $('#form3').submit(); // waint until form2 ended

            return false;
        });

请提供点击'点击'功能如所呈现。 感谢。

2 个答案:

答案 0 :(得分:1)

你可以使用这样的东西

 Form1SubmitOverloaded();
 $.ajax({
  type: "POST",
  url: test1.php,
  data: $( "#form1" ).serialize(),
  success: function(){
                Form2SubmitOverloaded();
                $.ajax({
                      type: "POST",
                      url: test2.php,
                      data: $( "#form2" ).serialize(),
                      success: function(){
                                    Form3SubmitOverloaded();
                                    $.ajax({
                                          type: "POST",
                                          url: test2.php,
                                          data: $( "#form2" ).serialize(),
                                          success: function(){
                                                    alert("All submit successfully");
                                                    }  
                                    });
                                }  
                });
            }  
});

答案 1 :(得分:1)

.post()方法看起来没有同步属性。但.ajax()有。{3}}。

我建议你使用.ajax()方法而不是.post()快捷方法。这样你可以强制ajax同步

$.ajax({
   [...]
   async : false
}