2011-10-15 11 views
9

Używam Cleditor http://premiumsoftware.net/cleditor/docs/GettingStarted.html. Chcę uzyskać wartość kluczowania i wstawić tekst do innego elementu div. cleditor przychodzi ze zdarzeniem change(), którego aktualnie używam w poniższym przykładzie jsfiddle, ale to nie jest to samo co keyup. Chcę, aby div był aktualizowany podczas pisania. Próbowałem keyup, ale to nie działa.jQuery Cleditor uzyskać wartość textarea na keyup

Oto co mam teraz

$("#input").cleditor().change(function(){ 
    var v = $('#input').val(); 
    $('#x').html(v); 
}) 

Sprawdź jsfiddle http://jsfiddle.net/qm4G6/11/

Odpowiedz

16

Wydaje się, że cleditor ukrywa textarea i zastępuje go z iframe (patrz linia 203 od źródła cleditor).

Tak, aby osiągnąć to, co chcesz, wystarczy, aby uzyskać dostęp wynikające iframe zawartość:

$("#input").cleditor(); 

$(".cleditorMain iframe").contents().find('body').bind('keyup', function(){ 
    var v = $(this).text(); // or .html() if desired 
    $('#x').html(v); 
}); 

Updated jsFiddle

UPDATE zająć komentarz Tima

to działa w Chrome i Firefox (Nie mam dostępu do IE):

$("#input").cleditor(); 

$($(".cleditorMain iframe")[0].contentWindow.document).bind('keyup', function(){ 
    var v = $(this).text(); // or .html() if desired 
    $('#x').html(v); 
}); 

Updated jsFiddle

UPDATE 2

użytkownika ima007 był w stanie znaleźć lepsze rozwiązanie cross-Przeglądarka: jQuery Cleditor wysiwyg text editor: keyup() works in webkit browsers but not Firefox or IE

+0

Ten skrzypce rozwiązanie działa w przeglądarkach WebKit, Chrome i Safari, ale nie w Firefoksie i IE, nie byłem w stanie zrozumieć to, ale zastanawiam się, czy ktoś może dostarczyć poprawkę kodu dla te 2 przeglądarki? dziękuję, -tim peterson –

+0

Odpowiedziałem na twoje obserwacje tutaj: http://stackoverflow.com/questions/7864012/jquery-cleditor-wysiwyg-text-editor-keyup-works-in-webkit-browsers-but-not- fi – dgilland

0

udało mi się to osiągnąć poprzez nieznaczne modyfikowanie kodu źródłowego w edytorze - w metodzie refresh (linia 801) Zmodyfikowałem procedurę obsługi zdarzenia zamazywania dokumentu iframe.

Poprzednia

// Update the textarea when the iframe loses focus 
    ($.browser.mozilla ? $doc : $(contentWindow)).blur(function() { 
     updateTextArea(editor, true); 
    }); 

Modified do

// Update the textarea when the iframe loses focus or keyup happens 
     ($.browser.mozilla ? $doc : $(contentWindow)).bind('blur keyup', function (e) { 
      updateTextArea(editor, true); 

      if (options.keyup && e.type === 'keyup') 
       options.keyup(editor.$area.val()); 
     }); 

i w opcjach, które są przekazywane w czasie inicjalizacji, można zdefiniować

$("#element").cleditor({ 
keyup : function (text) { 
alert(text); 
// do something 
} 
}); 

nadzieję, że to pomaga nikomu.

Pozdrowienia

0

Czy próbowałeś korzystania z CLEditor 'doc' nieruchomości?

doc - Obiekt dokumentu aktualnie edytowany w elemencie iframe. cleditor documentation

var inputDoc = $("#input").cleditor().doc; 

$(inputDoc).keyup(function(){ 
    var v = $('#input').val(); 
    $('#x').html(v); 
}) 
Powiązane problemy