通过onbeforeprint事件,在打印之前检测表格,将域中没填的行隐藏
在onafterprint事件中,当隐藏的行在显示function window_onbeforeprint()
{
  for(i=0;i<tbl.rows.length;i++)
   { 
     var ii = false; 
     for(j=0;j<tbl.rows[i].cells[j].length;j++)
       {
        if(tbl.rows[i].cells[j].all.tags("INPUT")[0].value=="")
         {ii=true;break;}
       }
     if(ii){tbl.rows[i].style.display="none";i--);
   } 
}
window_onafterprint() 要简单一点,只要把行的display属性都置为""就行在body中加入 onbeforeprint="window_onbeforeprint()" onafterprint="window_onafteprint()"

解决方案 »

  1.   

    可不可以把onbeforeprint定义在表格里面,而不是body里面,因为页面上有好多张表格
      

  2.   

    <script>
    document.onkeydown = printornot;
    function printornot(){
    var obj = event.srcElement 
    if(obj.type=="text"&&obj.value!=""){
      obj.parentElement.parentElement.className = "";
      }
    }
    </script>
    <style>
    @media print {
       .noprint {display:none}
    }
    </style>
    <table>
    <tr class="noprint"><td>
    <input type=text>
    </td></tr>
    <tr class="noprint"><td>
    <input type=text>
    </td></tr>
    </table>