JQuery 将 textarea 值复制到 div 中进行打印

Posted

技术标签:

【中文标题】JQuery 将 textarea 值复制到 div 中进行打印【英文标题】:JQuery copy textarea value into a div for printing 【发布时间】:2013-12-07 18:58:49 【问题描述】:

我正在尝试在很长的表单上设置 textareas 的打印样式。客户端需要能够打印页面(从任何浏览器),其中包含每个文本区域中显示的所有文本。我还没有找到任何使用纯 CSS 的方法(我尝试过溢出:可见和高度:自动/100% 属性,但都不起作用)所以我想知道如何使用 jquery 来完成此操作。

仅供参考,不会有点击功能或任何东西。我有屏幕显示的文本区域和它下面的隐藏 div。对于打印,我隐藏了 textarea 并显示了“forprint”div。所以我需要打印的 div 的值始终与 textarea 的值匹配。

<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 和函数?

【问题讨论】:

您是否有任何 javascript 在输入时将 textarea 内容复制到 div 中?或者你希望我们写那部分。 澄清一下,普通浏览器一般会隐藏div,但是一旦客户端点击打印,那么通过隐藏的div应该可以看到textarea中的文本?如果正确,那么您的 css 就可以了。只需使用 jquery 'attr' 工具从文本区域中提取文本并将其放入隐藏的 div 中。一旦用户点击打印,媒体打印 css 应该激活带有文本的 div。 您可能希望在模糊或更改上执行此操作,焦点不会在焦点发生后捕获更新。 啊,好酷。感谢帮助。关于我最后一个问题的任何想法?我不是 JS 专家或任何东西,所以我只是想知道最好的方法是什么。 【参考方案1】:

我很难得到你真正在做什么,但是一旦用户点击打印按钮,从所有文本区域获取文本,根据我的知之甚少,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 元素的 blur 事件。我希望这行得通。问候,一切顺利

【讨论】:

以上是关于JQuery 将 textarea 值复制到 div 中进行打印的主要内容,如果未能解决你的问题,请参考以下文章

如何将换行符从 HTML div 复制到 jQuery 中的 textarea?

将 div HTML 复制到 textarea 但保留换行符 [重复]

将textarea的文本复制到带有换行符的div中

即使在手动更新 TEXTAREA 值后如何强制 jQuery.text() 工作? [复制]

jQuery textarea 值不会转换换行符

jquery ajax上的Textarea没有发送到mysql,只是输入字段