老板又提出了一个坑爹的需求。
报表打印
而且报表要以input的形式展现,方便操作人员进行修改
之前没写过打印,所以找了好多JS和jquary的插件来做。
但是发现局部打印会导致的一个结果是,input输入修改之后,并不会打印出来。
找了好久才发现这是因为js实现局部打印的时候,是通过innerHtml来保存页面源代码,以此来实现。
但是对于input来说,输入改变的是value值,并不会改变源代码,所以这个方法就失效了。
但是有一种另外的解决途径。
既然不能保存局部的数据,那我把另外一部分隐藏了不就好了?
所以我就通过另一条道路解决了这个问题。
这个是通过保存局部源代码实现
function printdiv(printpage)
{
var headstr = ““;
var footstr = ““;
var newstr = document.all.item(printpage).innerHTML;
var oldstr = document.body.innerHTML;
document.body.innerHTML = headstr+newstr+footstr;
window.print();
document.body.innerHTML = oldstr;
return false;
}
这个是通过隐藏另外一部分不需打印的来实现。
这样就完美解决了打印input修改数据的问题
function showprint(){
(“#m_hiddden”).hide();
if (confirm(‘Print This Document?’)) {
window.print();
}(“#m_hiddden”).show();
}