J'utilise Cleditor http://premiumsoftware.net/cleditor/docs/GettingStarted.html . Je veux obtenir la valeur sur la touche et insérer le texte dans une autre div. Cleditor vient avec l'événement change () que j'utilise actuellement dans l'exemple jsfiddle ci-dessous, mais ce n'est pas la même chose que keyup. Je veux que le div soit mis à jour au fur et à mesure que je tape. J'ai essayé la clé mais ça ne fonctionne pas.
Voici ce que j'ai maintenant
$("#input").cleditor().change(function(){ var v = $('#input').val(); $('#x').html(v); })
Vérifiez jsfiddle http://jsfiddle.net/qm4G6/11/
Il semble que cleditor
masque la zone de textarea
et la remplace par un iframe
(voir la ligne 203 de la source Cleditor).
Donc, pour atteindre ce que vous voulez, il vous suffit d'accéder au contenu iframe
résultant:
$("#input").cleditor(); $(".cleditorMain iframe").contents().find('body').bind('keyup', function(){ var v = $(this).text(); // or .html() if desired $('#x').html(v); });
Mise à jour jsFiddle
MISE À JOUR pour aborder le commentaire de Tim
Cela fonctionne dans Chrome et Firefox (je n'ai pas accès à IE):
$("#input").cleditor(); $( $(".cleditorMain iframe")[0].contentWindow.document ).bind('keyup', function(){ var v = $(this).text(); // or .html() if desired $('#x').html(v); });
Mise à jour jsFiddle
MISE À JOUR 2
L'utilisateur ima007 a pu trouver une meilleure solution de navigateur croisé: jQuery Cleditor wysiwyg éditeur de texte: keyup () fonctionne dans les navigateurs Web, mais pas Firefox ou IE
J'ai été en mesure d'y parvenir en modifiant légèrement le code source de l'éditeur – en méthode de refresh
(ligne 801) J'ai modifié le gestionnaire d'événements flou de iframe doc.
précédent
// Update the textarea when the iframe loses focus ($.browser.mozilla ? $doc : $(contentWindow)).blur(function() { updateTextArea(editor, true); });
Modifié à
// 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()); });
Et dans les options qui sont passées au moment de l'initialisation, vous pouvez définir
$("#element").cleditor({ keyup : function (text) { alert(text); // do something } });
J'espère que cela vous aidera.
Cordialement
Avez-vous essayé d'utiliser la propriété '.doc' de CLEditor?
Doc – L'objet du document actuellement en cours d'édition dans l'iframe. Documentation du cédant
var inputDoc = $("#input").cleditor().doc; $(inputDoc).keyup(function(){ var v = $('#input').val(); $('#x').html(v); })