提交包含三个动作的表单

Submit form with three actions

我有一个三按钮表单。第一个按钮 "only Save document"、第二个按钮 "only generate PDF" 和第三个按钮 "Save document and Generate PDF".

只有“保存”按钮 - 只是提交表单 - 工作正常

<form method="post">
  <button type="submit" name="save">
  <input>....
</form>

仅“生成 PDF”按钮 - 使用简单 jquery 更改表单操作和目标并将其发送到 PDF 生成器 - 也可以正常工作

<form method="post">
   <button type="submit" name="generate" id="generate">
   <input>....
</form>

<script>
$('#generate').click(function(){
   $('form').get(0).setAttribute('action', './library/pdf/generator.php');
   $('form').get(0).setAttribute('target', 'blank'); 
   });
</script>

保存文档和生成 PDF 按钮 - 在这里我需要一键合并...提交 + 保存数据并在新选项卡中打开 PHP 生成器 (window) .. 两者使用相同的 POST 数据...有什么想法吗?我被困在这里

编辑: 尝试了这个回调但没有成功..它只打开 pdf 生成器(我是 jquery 的初学者,所以可能是废话)

$(function() {
$('#saveandgenerate').click(function(){
   $('form').get(0).setAttribute('action', './library/pdf/generator.php');
   $('form').get(0).setAttribute('target', 'blank');
   $('form').get(0).submit(function(){ 
      $('form').get(0).setAttribute('action', '');
      $('form').get(0).setAttribute('target', '');
      $('form').get(0).submit();
      }); 
   });
});

我建议使用比 javascript 更简单的 ajax post 来提交您的表单。

<form method="post" id="myForm">
   <button type="button"  id="generate" onclick="save_data();">
         Generate PDF
   </button>
   <input>....
</form>
<script>
     function save_data(){
            $.ajax({
                url: 'first/post/location/url',
                type: 'post',
                data: $("#myForm").serialize(),
                success: function (response) {
                    setTimeout(function (){
                       document.getElementById("myForm").submit();
                    }, 1000);
                }

            });
        }
</script>

希望对您有所帮助。

工作解决方案:

$(function() {
$('#save_and_generate').click(function()
    {
    $('form').get(0).setAttribute('action', './library/pdf/generator.php');
    $('form').get(0).setAttribute('target', 'blank');
    $('form').get(0).submit();
    setTimeout(function() {
        $('form').get(0).setAttribute('action', '');
        $('form').get(0).setAttribute('target', '');
        $("button#save").trigger('click');
        },100); 
    });
});

提交 "Save and generate PDF" > 更改表单属性并使用 PDF 正确打开新 window > 100 次超时后将表单属性更改为默认值 > 触发 "only Save" 按钮