gpt4 book ai didi

javascript - window.print 不打印输入元素的文本

转载 作者:行者123 更新时间:2023-11-28 03:55:14 25 4
gpt4 key购买 nike

我知道之前有人问过这个问题。但是我还没有找到确定的解决方案。虽然我尝试了所有以前的解决方案,但它不起作用。

我正在 AngularJS 上做一些编码,我必须在填写表单数据后打印它。但是,当我打印它时,所有表单字段在打印输出中都显示为空。建议在某个地方使用 CSS 和下面的媒体查询来处理这个问题。但仍然没有成功。那么可能的解决方案是什么?

媒体查询:

"@media print { 
@page { margin: 0; }
body {display:none}
}"

JS:

    $scope.printDiv = function(divName) {

var printContents = document.getElementById(divName).innerHTML;

var popupWin = window.open('', '_blank', 'width=300,height=300');
popupWin.document.open();
popupWin.document.write('<html><head><link rel="stylesheet" href="sample.css" /></head><body onload="window.print()">' + printContents + '</body></html>');
popupWin.document.close();
}

HTML:

<div>
<div id='printable'>
<p class="address">ADDRESS:<br/>
<input type="text" ng-model="Address_line1" maxlength="40" placeholder="Address line 1" style="border:1px solid white" width="60"/> <br/>
<input type="text" ng-model="Address_line2" maxlength="30" placeholder="Address line 2" style="border:1px solid white" /> <br/>
<input type="text" ng-model="Address_line3" maxlength="30" placeholder="Address line 3" style="border:1px solid white" /> <br/>
<input type="text" ng-model="Address_line4" maxlength="30" placeholder="Address line 4" style="border:1px solid white" />
<br/>
<input type="text" ng-model="Address_line5" maxlength="30" placeholder="Address line 5" style="border:1px solid white" />
<br/>

</p>
</div>
<button style="margin:auto;display:block;" ng-click="printDiv('printable');">Print</button>
</div>

最佳答案

当值被输入到输入中时,这些值不会存储在 HTML 标记中。因此,被引用元素的 .innerHTML 属性将不包含这些值。

一种解决方案是使用 ngValue对于与绑定(bind)到 ng-model 的 Controller 属性具有相同模型名称的每个输入。

<input ng-value="Address_line1" type="text" ng-model="Address_line1" maxlength="40" placeholder="Address line 1" style="border:1px solid white" width="60"/><br />
<input ng-value="Address_line2" type="text" ng-model="Address_line2" maxlength="30" placeholder="Address line 2" style="border:1px solid white" /> <br/>
<input ng-value="Address_line3" type="text" ng-model="Address_line3" maxlength="30" placeholder="Address line 3" style="border:1px solid white" /> <br/>
<input ng-value="Address_line4" type="text" ng-model="Address_line4" maxlength="30" placeholder="Address line 4" style="border:1px solid white" /> <br/>
<input ng-value="Address_line5" type="text" ng-model="Address_line5" maxlength="30" placeholder="Address line 5" style="border:1px solid white" />

这将模拟 value 属性被设置为用户输入的值。

请注意,如果用户未输入任何值,占位符文本将出现在输入位置。如果这是一个问题,也许可以添加 Javascript 代码来隐藏没有值(value)的输入,否则可能需要不同的解决方案。

参见 this codepen 中的演示.

关于javascript - window.print 不打印输入元素的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43505641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com