第一次寫打印,只知道window.print(),但是直接出來的是當前頁面的全部內容,而我要作的是打印當前模態框裏展現的內容。
網上搜了一下,都是指定具體的div,而後獲取該div裏的內容賦值給window.document.body.innerHTMLhtml
var bodyHtml = window.document.body.innerHTML; window.document.body.innerHTML = html;//html爲當前顯示的div的內容 window.print(); window.document.body.innerHTML = bodyHtml;
可是這個就致使了一個問題,若是是<span>打印的內容</span>這樣的,能夠直接獲取打印,但若是是賦值到input標籤裏的,根本就獲取不到值啊。
怎麼辦,接着搜唄。
找到兩種方法,第一種,也是比較原始的:將表單中的數據進行綁定,獲取過來從新賦值給對應的input中;jquery
//打印模態框問卷內容 $('.myform').on('click', 'a[name="printInfo"]', function () { $('#listModal').modal('hide');//關閉模態框 $('#quesInfoModal').modal('hide'); var weI = this.id; onprint(weI); }); }); //打印指定區域 function printHtml(html) { var bodyHtml = window.document.body.innerHTML; window.document.body.innerHTML = html; window.print(); window.document.body.innerHTML = bodyHtml; //上面關於bodyHtml賦值的兩項操做能夠忽略,由於要關閉模態框而且刷新頁面 //這個地方必需要刷新一下頁面,打印從新賦值以後,模態框裏的功能都不能正常使用, 包括父頁面列表中的功能也失效,這個問題不是很明白,有知道的能夠幫忙解決一下 refreshFrame();//刷新頁面 } function onprint(weI) { if (weI == 'wenjuanI') {//調查問卷詳情 bindData('#quesInfoModal'); var html = $('#quesInfoModal').html(); } else { bindData('#listModal'); var html = $('#listModal').html(); } printHtml(html); } //將表單中手動填寫的數據進行綁定,便於html()的時候獲取到 function bindData(modalID) { //type=text,type=number, 同時若是checkbox,radio,select>option的值有變化, 也綁定一下 $(modalID + " input[type='text']").each(function () { $(this).attr('value', $(this).val()); }); $(modalID + " input[type='number']").each(function () { $(this).attr('value', $(this).val()); }); $(modalID + " input,select option").each(function(){ $(this).attr('value',$(this).val()); }); //type=checkbox,type=radio 選中狀態 $(modalID + " input[type='radio']").each(function () { if ($(this).attr('placeholder')) {//$(this).attr('checked') $(this).attr('checked', true); } else { $(this).removeAttr('checked'); } }); $(modalID + " input[type='checkbox']").each(function () { if ($(this).attr('placeholder')) {//$(this).attr('checked') $(this).attr('checked', true); } else { $(this).removeAttr('checked'); } }); //$('.modal-backdrop').each(function () {//關閉模態框的遮罩層 // $(this).removeClass('in'); //}); }
注意:這種方法,必需要刷新一下頁面,打印從新賦值以後,模態框裏的功能都不能正常使用,包括父頁面列表中的功能也失效,(至關於頁面變成了一個純靜態頁面,沒有js了)這個問題不是很明白,有知道的能夠幫忙解決一下啦
第二種方法,我看網上有說用jqprint插件的(http://www.jq22.com/jquery-in...),這個我也沒有詳細的看,只是稍微試了一下,也是不能獲取到input的值,並且隱藏的div也一併給顯示出來的了,效果很差,有會的能夠指教一下啊。ide