2012-11-02 108 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>