我有一个HTML表单,我想在完成后将其打印出来。我可以对其进行某种处理,以将表单元素(输入,文本区域,单选按钮等)转换为跨度,div和值。但是,我希望在用于打印的HTML中包含表单的样式块。如果我不包括样式块,那么表单将不会按照HTML页面上的格式打印。
关于标记名更改,只要设置了样式表以使其看起来可用于打印,则类似的操作对于输入也适用。对其他表单元素执行相同的操作,即可制作出漂亮的打印纸。
$(“#previewform”)。on(“ click”,function(e){ $(“ .inputtospan”).each(function(index){ $(this).replaceWith(''+ $(this).val()+''); }); });
是否有一种获取样式块的方法,例如
<style>
. . . .
. . . .
</style>
使用jQuery或Javascript将代码块附加到传递的用于打印的HTML。这对于使用支持样式表的客户端的电子邮件也可以吗?
以使用iFrame的示例为例,似乎确实会返回样式块的内容:
$("#viewerframe").contents().find("#mriform").prev().html()
尽管同样适用于父页面。在这种情况下,样式块将紧挨表单放置,因此它是前一个兄弟。
style = $("#mriform").prev()[0].outerhtml;
可以获取样式块的代码,并且只要我通过要打印的样式+(“ #mriform”)。html(),它似乎就可以在打印时呈现。
只是想知道是否存在普通的JS方式或其他方式来管理此类问题。我尝试在样式声明中包含一个id或其他属性,但这不起作用,尽管在样式块紧接表单工作之前或之后使用prev()或next()时也是如此。我宁愿不必将块包含在相对于表单的可访问位置。
还有另一个SO问题可以解决此问题:
尽管我确实喜欢创建脚本来完成同一服务器端的想法,但是可以使用jQuery,JS来处理该表单并将其转换为外观美观的表单。只需将输入元素标签转换为跨度,将文本区域转换为div,将标签转换为跨度等,就可以有效地实现效果,并且可以动态完成。