2013-04-30 66 views
1

我有一個文檔在JQuery模式框內的網站上彈出。該文檔的最後打印按鈕只是在彈出框中打印文檔。通過鍵盤觸發Ctrl + P打印JQuery模式框

我正在尋找一種解決方案,可以通過按Ctrl + P打印彈出框。現在Ctrl + P打印包括背景在內的所有頁面......我只希望找到一個解決方案,幫助我僅在彈出窗口中打印文檔。

我的JQuery模式對話框中的iFrame並通過以下方式顯示: -

<div id="frameContainer"> 
     <iframe id="lightboxFrame" width="950px" scrolling="auto" height="500px"> 
     <!DOCTYPE html> 
      <html> 
      <head> 
       <body> (Whole Document in a Div) </body> 
      ... 

這是在打印彈出文檔彈出HTML的DIV。

<div id="edit-actions" class="form-actions form-wrapper"> 
    <input id="print-submit" class="form-submit" value="Print this Survey" name="print" onclick="printAssessment()" type="button" /> 
</div> 

這是我做過什麼: -

$(document).keydown(function(event) { 
     if (event.ctrlKey==true && (event.which == '80')) { //cntrl + p 
      event.preventDefault(); 
      printAssessment(); 
     } 
    }); 

    function printAssessment() { 
     //alert("Print the little page"); 
     window.print(); 
    } 

功能,當我按下Ctrl + P絕對是被稱爲,但它仍然打印整個頁面。我希望它只打印Modal Box。奇怪的是,當我按下使用相同功能的Modal Box內的打印按鈕時,它可以正確打印。

感謝,

先編輯: -

現在部分工作。

當我改變PrintAssessment()的功能,下面,它的工作原理: -

function printAssessment() { 

     window.frames["lightboxFrame"].focus(); 
     window.frames["lightboxFrame"].print(); 

    } 

但是,奇怪的是,當我按Ctrl + P僅在第一次打印。當我再次嘗試打印,它不斷給我這個錯誤: -

Uncaught TypeError: Cannot call method 'print' of undefined 

Uncaught TypeError: Cannot call method 'focus' of undefined 

感謝。

+0

您應該使用:$ ( '#lightboxFrame')[0] .contentWindow.print(); – Anass 2013-04-30 17:15:31

回答

1

相反的:

window.print(); 

您可以打印iframe的內容,如下列:

$('#lightboxFrame')[0].contentWindow.print(); 

把代碼波紋管在功能printAssessment()

+0

嗨安娜,感謝您的評論。但不知何故,它不起作用。我應該把這段代碼放在printAssessment()函數中嗎?謝謝。 – Steve 2013-04-30 16:48:41

+0

是的你說得對!我正在編輯上面的解決方案! – Anass 2013-04-30 17:06:38

+0

謝謝,但同樣的問題。第一次嘗試,它打印罰款。一秒鐘的嘗試,它給我的錯誤: - 未捕獲的TypeError:無法讀取未定義的屬性'contentWindow' – Steve 2013-04-30 17:16:38