2012-11-02 82 views
3

我正在使用WSYIHTML5的最新版本(0.3.0)作为留言板。董事会的其中一项功能是报价发布选项。我一直在试图弄清楚如何将引号附加到文本区域。使用WYSIHTML5和jQuery将文本附加到文本区域

,我有以下的jQuery作为测试

$('.quote').click(function(){ 
    $('textarea').append('test this'); 
    alert($('textarea').text()); 
}); 

警报显示已追加到隐藏的textarea的文本,但它不会在WYSIHTML5视图的IFRAME更新。

奇怪的是,如果我在初始化WYSIHTML5后直接追加文本,它会追加很好。

任何想法让这个工作?

+0

你不能直接附加到一个文本。您可以检索当前值,将文本附加到值并更新textarea的整个值。但是,当更新WYSIWYG时,您通常需要通过API更新方法来执行此操作。 – charlietfl

回答

12

所以为了更新的iframe,并将它格式化与HTML的任何文字,我做了以下..

var value = editor.getValue(); 
var text = '<b>some text</b>;' 
editor.setValue(value + text, true); 

这是假设WYSIHTML5是变量“编辑器”项下实例化。它会追加引号,并正确地格式化文本。布尔值是如果您希望通过WYSIHTML5解析器规则运行该值。

如果有人知道一个更好的方法,我是全部耳朵。

+0

您是否知道是否有办法获取整个textarea的值,但只有当前选择? –

1
$('iframe').contents().find('.wysihtml5-editor').html('your new content here'); 
+0

作品伟大的兄弟。谢谢 –

0

为引导,wysihtml5使用以下功能吧:

<script> 

    $(function() { 
    // Replace the <textarea id="editor1"> with a CKEditor 
    // instance, using default configuration. 
    // CKEDITOR.replace('editor1'); 
    //bootstrap WYSIHTML5 - text editor 
    $(".textarea").wysihtml5(); 

    }); 



function injectString(str){ 
    var sel=frames[0].getSelection(); 
    var nd=sel.anchorNode; 
    var txt=nd.data+''; 
    var pos=sel.anchorOffset||0; 
    sel.anchorNode.data=txt.slice(0,pos)+str+txt.slice(pos); 
}</script> 

使用这样

<button id="name" data-wysihtml5-command="foreFrac" onclick="injectString('{name}')" type="button" class="btn btn-block btn-success btn-lg">Name </button>