2013-11-22 89 views
3

我试图设置为文本域打印样式很长的形式。客户端需要能够从每个textarea中显示所有文本(从任何浏览器)打印页面。我还没有找到任何方式来做到这一点纯CSS(我已经尝试溢出:可见和高度:自动/ 100%属性,都不工作),所以我想知道如何用jQuery来完成这一点。JQuery的复制textarea的值转换成一个div打印

仅供参考,将有上点击功能或任何没有。我有textarea显示屏幕和隐藏的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和功能为他们每个人?

+0

你有那份textarea的内容到div,因为它是进入任何JavaScript?或者你希望我们能写出那部分内容。 –

+0

只是为了澄清,那么div会被隐藏到正规的浏览器一般,但是一旦客户点击打印,然后将文本区域内的文本应通过隐藏的div可见?如果这是正确的,你的CSS是好的。只需使用jquery'attr'工具从文本区域中提取文本并将其放入隐藏的div中即可。一旦用户点击打印,媒体打印CSS应该用文本激活div。 – andre3wap

+0

您可能想要在模糊或更改时执行此操作,但在焦点发生后焦点不会捕获更新。 –

回答

0

我很难得到你真正做什么,正在而一旦用户点击打印按钮,根据我的小知识,得到所有文字区域的文字,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); 
    } 
} 

你也可以尝试用身体元素的blur事件。我希望那些作品。问候,事事如意

+0

感谢您的帮助,但此代码不适合我。 – user3022992

相关问题