0

I have this page with 2 Jquery multiselects.

I have a print.css file which works perfectly it hides the entire form and even some parents divs. Using a home made class. Some other elements are hidden on this page, and others using the no-print class. Or the @media print. Which I added but does not solve the problem. Hence it are the Jquery multi selects that do not hide on print.

However on the page when I click print it will show the entire list of options on the prints with even a select all deselect all. This is really annoying. adding the id of the select to the print.css or his options does not work. Who would want to print out a list of options anyway? A print screen of a print job. Grayed out some data for privacy concerns

CSS (print.css content)

*/* REMOVE UNWANTED ELEMENTS */
#page-header, #footer, .btn-group, .hideOnPrint, #save {
    display: none;
}

/* CLEAR SOME OF THE BORDERS */
.content-box {
    border: none;
}

.fullSizeOnPrint {
    width: 100% !important;
}

#pager{
    display: none !important;
}

.no-print
{
    display: none !important;
    height: 0;
}

#comment-input
{
    display: none !important;
}

CSS custom.css

...
 @media print
{
    #pager,
    form,
    .no-print
    {
        display: none !important;
        height: 0;
    }


    .no-print, .no-print *{
        display: none !important;
        height: 0;
    }
}

PART OF HTML HEADER

<link href="/theme/css/ui/ui.print.css?version=x.x.x" media="print" rel="stylesheet" type="text/css" >
...
<link href="/css/custom.css?version=x.x.x" media="screen" rel="stylesheet" type="text/css" >

PART OF HTML BODY

<div id="filter-header-toggle-content" class="portlet-content no-print">
        <form id="blacklistHitListFilterForm" enctype="application/x-www-form-urlencoded" action="/blacklist/candidate-group" method="post"><ul class="content-box">
<table width="100%"><tbody><tr><td><li><label class="desc optional">Filter</label>
<div class="slideswitch"><div class="radio-group" style="display:none">
<label><input type="radio" name="active" id="active-0" value="0" checked="checked">Uit</label> <label><input type="radio" name="active" id="active-1" value="1">Aan</label></div><div class="btn-group" data-toggle="buttons-radio"><button class="btn btn-success active" data-value="0">Uit</button><button class="btn" data-value="1">Aan</button></div></div></li></td>
<td><li><label for="numberPlate" class="desc optional">Nummerplaat</label>
<div>
<input type="text" name="numberPlate" id="numberPlate" value="" class="field text full"></div></li>
<li><label for="country" class="desc optional">Land</label>
<div>
<input type="text" name="country" id="country" value="" class="field text full country ui-autocomplete-input" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"></div></li>
<li><label for="priority" class="desc optional">Prioriteit</label>
<div>
<select name="priority" id="priority" class="field select full">
    <option value="0" label="--">--</option>
    <option value="1" label="1">1</option>
    <option value="2" label="2">2</option>
    <option value="3" label="3">3</option>
    <option value="4" label="4">4</option>
    <option value="5" label="5">5</option>
</select></div></li></td>
<td><li><label for="camera" class="desc optional">Camera</label>
<div>
<select name="camera[]" id="camera" multiple="multiple" class="field select full" style="display: none;">
    <option value="300" label="__Rob2456">__Rob2456</option>
    ...
</select><button type="button" class="ui-multiselect ui-widget ui-state-default ui-corner-all" aria-haspopup="true" tabindex="0" style="width: 294px;"><span class="ui-icon ui-icon-triangle-1-s"></span><span>Selecteer de opties</span></button></div></li>
<li><label for="node" class="desc optional">Node</label>
<div>
<select name="node[]" id="node" multiple="multiple" class="field select full" style="display: none;">
    <option value="51" label="ANPR-KA04A">ANPR-KA04A</option>
    ...
</select><button type="button" class="ui-multiselect ui-widget ui-state-default ui-corner-all" aria-haspopup="true" tabindex="0" style="width: 294px;"><span class="ui-icon ui-icon-triangle-1-s"></span><span>Selecteer de opties</span></button></div></li></td>
<td><li><label for="timespan" class="desc optional">Tijdsspanne</label>
<div>
<select name="timespan" id="timespan" class="field select full">
    <option value="0" label="--">--</option>
    ...
</select></div></li></td></tr></tbody></table></ul></form>    </div>

COMMENT TAG FOR VERSION OF MULTLISELECT (jquery.multiselect.js)

/* jshint forin:true, noarg:true, noempty:true, eqeqeq:true, boss:true, undef:true, curly:true, browser:true, jquery:true */
/*
 * jQuery MultiSelect UI Widget 1.14pre
 * Copyright (c) 2012 Eric Hynds
 *
 * http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/
 *
 * Depends:
 *   - jQuery 1.4.2+
 *   - jQuery UI 1.8 widget factory
 *
 * Optional:
 *   - jQuery UI effects
 *   - jQuery UI position utility
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 */
user3806549
  • 1,428
  • 1
  • 17
  • 25

2 Answers2

3
@media print {    
    .no-print, .no-print *{
        display: none !important;
    }
}

From: How do I hide an element when printing a web page?

Community
  • 1
  • 1
Vixed
  • 3,429
  • 5
  • 37
  • 68
0

I changed the button href to a function instead of javascript: window.print() In this function I have overwritten the form using the empty() function of JQuery then I print the page. After the print job is done, or canceled the page is reloaded so that the initial content is still valid.

JavaScript

function printJob()
{
    try{

        $('#blacklistHitListFilterForm').empty();

    }
    catch($e)
    {
        alert($e);
    }


    window.print();
    location.reload();
    return false;
}

HTML

<a href="javascript:printJob();" class="btn btn">
                <i class="icon-print"></i>
                Print</a>
user3806549
  • 1,428
  • 1
  • 17
  • 25