2

How can I use jQuery to print only the table of the document?

    <!--panel-->
<div class="panel panel-primary">
    <!-- Default panel contents -->
    <div class="panel-heading">New Order
    <button class="btn btn-sm pull-right btn-default" type="submit">Print Item</button>
    </div>

    <div class="panel-body">
        <!--table-->
        <table class="table table-condensed">
            <thead>
                <tr>
                    <th>#</th>
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Username</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1</td>
                    <td>Mark</td>
                    <td>Otto</td>
                    <td>@mdo</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>Jacob</td>
                    <td>Thornton</td>
                    <td>@fat</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td colspan="2">Larry the Bird</td>
                    <td>@twitter</td>
                </tr>
            </tbody>
        </table>
        <!--end of table-->
    </div>
</div>
<!--end of panel-->

Demo

3
  • 1
    What do you mean by "print the table of the document"? Commented Mar 6, 2015 at 21:33
  • Hi Qianyue, here is an example of what I would like to do jsfiddle.net/Behseini/b8khwnf8 As you can see I simply would like to print the new item instead of printing the whole document Commented Mar 6, 2015 at 21:39
  • I still don't catch what you mean. I see your new fiddle, in fact, the structure of the table don't change. So you just want to remove the style? like this : jsfiddle.net/13nh0xts/3 ? Commented Mar 6, 2015 at 21:52

2 Answers 2

1

You could try this function. Put your table in a div with a unique ID then reference it in the JQuery:

<script>function printDiv() {
                    var divName= "<DIV ID HERE>";

                     var printContents = document.getElementById(divName).innerHTML;
                     var originalContents = document.body.innerHTML;

                     document.body.innerHTML = printContents;

                     window.print();

                     document.body.innerHTML = originalContents;
                }</script>
Sign up to request clarification or add additional context in comments.

Comments

0

Try this (demo):

$(function () {
    $('button[type="submit"]').click(function () {
        var pageTitle = 'Page Title',
            stylesheet = '//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css',
            win = window.open('', 'Print', 'width=500,height=300');
        win.document.write('<html><head><title>' + pageTitle + '</title>' +
            '<link rel="stylesheet" href="' + stylesheet + '">' +
            '</head><body>' + $('.table')[0].outerHTML + '</body></html>');
        win.document.close();
        win.print();
        win.close();
        return false;
    });
});

4 Comments

@TomStickel Try the print widget.
I'm surprised that is not working either, very odd I am on home desktop with Chrome too and the dialog spawned print preview body is blank but shows a header and footer like the other one for IE
Doh, I'm sorry... I did fix the problem, but it's currently only available in the master branch of the repository. I plan on a new release very soon.
A new release is available. Try the demo again.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.