我有这个简单的脚本,可以打印一部分网页。 但是,它不会打印用户输入。
我的目标是只打印表格和用户输入;而不是网页的其余部分。
我不想使用CSS;只是js / jQuery和html。
我的问题是:如何打印包括用户输入在内的各种表单输入元素?
HTML:
<div id="print-content">
<textarea>Print User Input</textarea>
<input type="button" onclick="printDiv('print-content')" value="print a div!"/>
</div>
js:
<script type="text/javascript">
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
</script>
答案 0 :(得分:2)
输入的 current 值未在HTML中表示(仅 default 值),因此它不会显示在innerHTML
中。
您将需要遍历原始页面中的所有输入,读取它们的value
属性,然后将值复制到新页面上的新输入中。
最好使用CSS和@media print
隐藏不想打印的元素,而不是用innerHTML
多次重写文档。
答案 1 :(得分:1)
尝试删除此行document.body.innerHTML = printContents;
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
window.print();
}
<div id="print-content">
<form>
<textarea>Print User Input</textarea>
<input type="button" onclick="printDiv('print-content')" value="print a div!" />
</form>
</div>
答案 2 :(得分:1)
仅在chrome上测试。
function printDiv(divName) {
var printContents = document.getElementById(divName).cloneNode(true);
w = window.open();
w.document.body.appendChild(printContents);
w.print();
w.close();
return true;
}