2013-04-23 41 views
2

我有一個PDF生成器,它將完整的HTML文檔字符串作爲參數,然後打開在新選項卡/窗口中創建的PDF或下載文件。我被要求連接一個表單,這個表單可以創建一個以分號分隔的名稱並從中生成多個PDF的證書。這是它的代碼:在循環中提交表單

$("#certgensubmit").click(function (event) { 
    // Get the names to generate certificates for. 
    var names = $("#presented-to").html().split(';'); 
    $.each(names, function(index, value) { 
     if(value.length > 0) { 
      var presentedBy = $("#presented-by").html(); 
      var awardName = $("#award-name").html(); 
      var presentedDate = $("#presented-date").html(); 
      var signerName = $("#signer-name").html(); 

      var html = getCertificateHTML(presentedBy, value, awardName, presentedDate, signerName); 
      //console.log(html); 
      $("#HtmlContent").val(html); 
      $("#pdfform").submit(); 
     } 
    }); 
}); 

這有效,除了它只創建第一個證書PDF。不過,它每次都在處理代碼。如果我取消註釋「console.log(html)」這一行,我會在Chrome的控制檯中看到正確的輸出。我可以通過在循環中用JavaScript創建一個新文檔並運行表單提交。唯一的問題是,它只在發送給PDF生成器的字段中放置文本,但在生成器需要的字段中發送HTML時完全失敗。因此,看起來這個問題與在創建PDF期間打開新標籤有關。我需要這樣做,所以用戶不會從接受PDF輸入的UI中被帶走。

不要太在乎PDF生成方面 - 我只需要知道如何在jQuery每次循環中多次觸發表單提交併使用不同的值。剩下的只是上下文。

+0

您是否想過創建一個包含多個證書的PDF,每頁一個證書? – slashingweapon 2013-04-23 18:40:34

+0

嘗試添加一個延遲,看看發生了什麼...睡眠()或什麼的。 – 2013-04-23 19:00:54

回答

0

也許你不能提交表單多次。

因此,將您的提交功能更改爲帖子,並刪除您的表單標籤。

.... 

$("#HtmlContent").val(html); 

$.post("pdf_creator.php", 
{ 
    input_name:$("#HtmlContent").val() 
}, 
function(data,status){ 
    //alert("Data: " + data + "\nStatus: " + status); 
}); 

.... 


<!--<form action='pdf_creator.php' id='pdfform'> //form tags out --> 
    <input type='text?' name='input_name' id='HtmlContent' value=''> 
<!--</form>--> 

希望這個工程,並幫助你。