我正在尝试为很长的表单上的文本区域设置打印样式。客户端需要能够打印页面(从任何浏览器),其中包含每个文本区域显示的所有文本。我还没有找到任何方法用纯CSS来做到这一点(我尝试过overflow:visible和height:auto/100%属性,但都不起作用)所以我想知道如何用jquery来完成这个任务。
仅供引用,不会有点击功能或任何东西。我在屏幕上显示了文本区域,并在其下方隐藏了一个 div。对于打印,我隐藏文本区域并显示“forprint”div。所以我需要打印的 div 的值始终与文本区域的值匹配。
<div class="forscreen">@Html.TextAreaFor(a => a.Subtitle, AdminOnlyAttribute(new Dictionary<string, object>() { { "class", "k-textbox" }, { "rows", "6" } }))</div>
<div class="forprint"></div>
.forprint {
display: none;
}
@media print {
.forprint {
display: block;
height: auto;
}
.forscreen {
display: none;
}
}
任何帮助将不胜感激!
编辑:当然,我在发布问题后不久就弄清楚了。这是执行此操作的 jquery:
$('div textarea').focus(function () {
var copyText = $(this).val();
$(".forprint").html(copyText);
});
现在,我想知道是否有一种方法可以对页面上的所有文本区域执行此操作,而无需为每个文本区域创建唯一的 ID 和函数?
最佳答案
我很难得到你真正在做什么,但是一旦用户单击打印按钮,从所有文本区域获取文本,根据我的一点知识,window.document对象失去焦点 - 模糊事件。专注于触发文本复制的事件,我认为可以执行以下操作:
$(document).blur(function(e)
{
var textObj = $("textarea").toArray();
for(var i = 0; i<textObj.length; ++i)
{
var mytext = textObj[i].val();
$(".forprint").append(mytext);
}
}
您可能还想尝试使用 body 元素的模糊事件。我希望这有效。问候并祝一切顺利
关于javascript - JQuery将textarea值复制到div中进行打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152612/