2014-10-06 51 views
0

我嘗試使用下面的代碼打印部分頁面:如何在用戶輸入後打印頁面?

<script type="text/javascript"> 
    $("#btnPrint").live("click", function() { 
     var divContents = $("#PrintContent").html(); 
     var printWindow = window.open('', '', 'height=400,width=800'); 
     printWindow.document.write('<html><head><title>My Print Title</title>'); 
     printWindow.document.write('</head><body>'); 
     printWindow.document.write(divContents); 
     printWindow.document.write('</body></html>'); 
     printWindow.document.close(); 
     printWindow.print(); 
    }); 
</script> 

一切都很好,但是當用戶更改了一些輸入(打印DIV中一種形式),如點擊複選框,打印後窗口仍然顯示原始頁面(空格式或初始值)。我如何讓用戶用他的輸入打印頁面?

謝謝。

+1

爲什麼你使用'.live()'?它已被棄用多年了。另外,爲什麼不simlpy使用適當的'media = print' CSS,以便用戶可以正確打印實際頁面? – ThiefMaster 2014-10-06 17:27:40

+0

如果你創建一個JSFiddle(http://jsfiddle.net/) – 2014-10-06 17:29:45

+0

Jsfiddle.net不允許我使用document.write,會更清楚。我會嘗試css打印。謝謝大家。 – user3191850 2014-10-06 18:21:14

回答

0

表單的狀態保存在DOM中,而不是HTML。當調用jQuery的html()函數時,你會丟失你的值。相反,你必須克隆整個jQuery對象並將其附加到新窗口。

$("#btnPrint").on("click", function() { 
    var divContents = $("#PrintContent").clone(); 
    var printWindow = window.open('', '', 'height=400,width=800'); 

    divContents.appendTo(printWindow.document.body); 
    printWindow.print(); 
}); 

http://jsfiddle.net/NameFILIP/up6p0zk5/

+0

它完美地工作。謝謝菲利普。 – user3191850 2014-10-06 19:33:17