我有一个简单的 HTML Web 表单,我希望用户填写然后打印。
我发现了一个类似的问题,它展示了如何使用 Javascript 在此处打印页面上的特定内容: How can I insert a Print button that prints a form in a webpage
接受的答案确实打印了 div 内的内容。但是,它不会打印表单的任何用户输入。它只是打印一个没有输入的空白表格。这是我的例子
<div id="print-content"><form>
<table width="100%">
<tbody>
<tr>
<td><label>First Name</label></td>
<td><input name="First Name" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Last Name</label></td>
<td><input name="Last Name" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Street Address</label></td>
<td><input name="Street Address" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>City</label></td>
<td><input name="City" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>State</label></td>
<td><input name="State" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Zip Code</label></td>
<td><input name="Zip Code" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Phone Number</label></td>
<td><input name="Phone Number" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>E-Mail Address</label></td>
<td><input name="Email Address" maxlength="255" type="text" /></td>
</tr>
<tr>
<td colspan="2"><label>Description of item(s) to be serviced</label><br /><textarea name="Items" type="text"></textarea></td>
</tr>
<tr>
<td colspan="2"><label>Description of Problem(s)</label><br /><textarea name="Problems" type="text"></textarea></td>
</tr>
<tr>
<td colspan="2"><label>Any Special Notes</label><br /><textarea name="Notes type=" text=""></textarea></td>
</tr>
</tbody>
</table>
<input type="button" onclick="printDiv('print-content')" value="print a div!" /></form></div>
<script type="text/javascript">// <![CDATA[
function printDiv(divName) {
alert('Click Here To Print This Form');
var printContents = document.getElementById(divName).innerHTML;
w=window.open();
w.document.write(printContents);
w.print();
w.close();
}
// ]]></script>
关于如何更改此脚本以便它也能打印表单中的用户输入有什么想法吗?谢谢!
最佳答案
我已经从您发布的链接中重新创建了代码,并进行了一些更改,基本上它会获取所有输入名称和值并重新创建一个表格来打印它们,即:
<div id="print-content"><form>
<table width="100%">
<tbody>
<tr>
<td><label>First Name</label></td>
<td><input name="First Name" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Last Name</label></td>
<td><input name="Last Name" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Street Address</label></td>
<td><input name="Street Address" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>City</label></td>
<td><input name="City" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>State</label></td>
<td><input name="State" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Zip Code</label></td>
<td><input name="Zip Code" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>Phone Number</label></td>
<td><input name="Phone Number" maxlength="255" type="text" /></td>
</tr>
<tr>
<td><label>E-Mail Address</label></td>
<td><input name="Email Address" maxlength="255" type="text" /></td>
</tr>
<tr>
<td colspan="2"><label>Description of item(s) to be serviced</label><br /><textarea name="Items" type="text"></textarea></td>
</tr>
<tr>
<td colspan="2"><label>Description of Problem(s)</label><br /><textarea name="Problems" type="text"></textarea></td>
</tr>
<tr>
<td colspan="2"><label>Any Special Notes</label><br /><textarea name="Notes type=" text=""></textarea></td>
</tr>
</tbody>
</table>
<input type="button" onclick="printDiv('print-table')" value="print a div!" /></form></div>
</div>
<script>
function printDiv(divName) {
//alert('s');
var printContents = '<div id="print-content"><form><table width="30%"><tbody>';
var inputs, index;
inputs = document.getElementsByTagName('input');
for (index = 0; index < inputs.length - 1; ++index) {
var fieldName = inputs[index].name;
var fieldValue = inputs[index].value;
printContents +='<tr><td><label>'+fieldName+'</label></td>';
printContents +='<td>'+fieldValue+'</td></tr>';
}
var z = 8; // if you had more labels remeber to change this value
inputs = document.getElementsByTagName('textarea');
for (index = 0; index < inputs.length; ++index) {
//var fieldName = inputs[index].name;
var fieldName = document.getElementsByTagName('label')[z].textContent;
var fieldValue = inputs[index].value;
printContents +='<tr><td colspan="2"><label>'+fieldName+'</label><br>'+fieldValue+'</td></tr>';
++z;
}
printContents +='</tbody></table>';
w=window.open();
w.document.write(printContents);
w.print();
w.close();
}
</script>
关于包含用户输入的 Javascript 打印 Web 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834546/