通过键盘触发JQuery Modal Box的Ctrl + P打印

时间:2013-04-30 16:18:34

标签: jquery printing modal-dialog

我有一个在JQuery Modal Box中弹出的文档。文档末尾有一个打印按钮,只是在弹出框中打印文档。

我希望找到一个解决方案,我可以通过按Ctrl + P打印弹出框。现在Ctrl + p打印所有页面,包括背景...我只是希望找到一个解决方案,帮助我在弹出窗口中打印文档。

我的JQuery Modal Box在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。奇怪的是,当我按下使用相同功能的模态盒内的打印按钮时,它会正确打印。

谢谢,

第一次编辑: -

现在部分工作。

当我将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 

感谢。

1 个答案:

答案 0 :(得分:1)

而不是:

 window.print();

您可以打印iframe的内容,如下所示:

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

将代码放在你的函数printAssessment()