plugin jQuery validation + CKEditor - valider lors de la saisie
J'utilise CKEditor sur un textarea et le plugin jQuery validation (http://bassistance.de/jquery-plugins/jquery-plugin-validation/)
Avec le plugin jQuery, il est possible de marquer un terrain vide ou requis.
Lorsqu'un champ par exemple, "nom" est vide, le champ sera marqué comme non valide lors de la soumission du formulaire.
Mais, tout en tapant dans un "nom de produit", le champ sera automatiquement marquée comme valide lors de la frappe. C'est très bien, mais je veux avoir la même chose avec mon CKEditor-activé textarea. Tout fonctionne très bien avec un simple textarea (lors de la saisie de texte, le champ devient valide), mais cela ne fonctionne plus après l'ajout de CKEditor pour le textarea.
À partir de là, vous devez cliquer sur le bouton soumettre avant le CKEditor textarea obtient de valider de nouveau.
Des idées sur comment je peut faire ce travail?
Merci beaucoup pour votre aide, stackoverflow a été d'une grande aide depuis quelques jours!
Mise à JOUR:
J'ai essayé la solution de fil que vous m'avez donné mais ça ne fonctionne pas:
Utilisation de jQuery pour récupérer le contenu de CKEditor l'iframe
J'ai:
CKEDITOR.instances["page_content"].document.on('keydown', function(event)
{
CKEDITOR.tools.setTimeout( function()
{
$("#page_content").val(CKEDITOR.instances.page_content.getData());
}, 0);
});
mais qui continue à moi: "CKEDITOR.les instances.contenu de la page.le document n'est pas défini"
L'id de mon textare est "contenu de la page"
Cela fonctionne bien après avoir cliqué sur le bouton, mais comme vous le voyez j'ai besoin de déclencher l'événement keydown en quelque sorte
$("#btnOk").click(function(event) {
CKEDITOR.instances.page_content.updateElement(); //works fine
});
Mise à JOUR 2:
Ce code est correct et qu'il récupère les données à partir de CKEDITOR dans mon textarea, mais encore, rien ne se passe avec mon plugin de validation, il n'est pas "répondre que je tape" dans le CKEDitor alors que c'est le moment de réagir et de dire que le champ est OK quand je tape du texte
CKEDITOR.instances["page_content"].on("instanceReady", function()
{
//set keyup event
this.document.on("keyup", updateTextArea);
//and paste event
this.document.on("paste", updateTextArea);
});
function updateTextArea()
{
CKEDITOR.tools.setTimeout( function()
{
$("#page_content").val(CKEDITOR.instances.page_content.getData());
}, 0);
}
OriginalL'auteur Jorre | 2009-12-15
Vous devez vous connecter pour publier un commentaire.
Vous devez l'ajuster la CKEditor textarea pour le HTML quand il perd le focus, au lieu de (je suppose que c'est ce qu'il fait par défaut) lorsque le formulaire est soumis.
Quelqu'un avait une question similaire il y a quelques jours et semble avoir été couronnée de succès, check it out.
Je suis exactement dans la même situation dans un contexte différent (accès à une CKEditor exemple pour définir son corps de classe) et a eu des problèmes similaires. J'ai posé une question et obtenu une réponse qui semble pour le résoudre. Je n'ai pas eu le temps de le regarder encore, mais peut-être qu'il vous aide à: stackoverflow.com/questions/1844569/...
c'est en effet une étape dans la bonne direction, mais je ne peux pas obtenir un clic de l'événement keydown pour déclencher correctement... j'ai eu: CKEDITOR.document.on('click', function(event) mais qui déclenche un événement en cliquant dans mon corps du document, et non pas à l'intérieur de la CKEDitor?
Découvrez la plus haute cote de réponse à ma question j'ai fait un lien dans le commentaire. À l'aide de nemisj de la méthode, je peux définir la classe de l'CKEDitor du corps. Vous devriez être en mesure d'ajouter des auditeurs de cette façon.
Je reçois de plus près : il obtient les données correctes, mais encore, le plugin jQuery validation n'est pas de répondre à ce code. CKEDITOR.les instances["contenu de la page"].("instanceReady", function() { //définir l'événement keyup.document.("keyup", updateTextArea); //et coller de cet événement.document.sur (la"pâte", updateTextArea); }); function updateTextArea() { CKEDITOR.outils.setTimeout( function() { $("#contenu de la page").val(CKEDITOR.les instances.contenu de la page.getData()); }, 0); }
OriginalL'auteur Pekka 웃
Ok tout le monde, j'ai fixé grâce à vos conseils: Le plugin jquery validation est de réagir à l'événement keyup dans le textarea ou de champs de texte, de sorte que vous besoin de déclencher cet événement après la mise à jour de votre textarea.
Check this out:
OriginalL'auteur Jorre
Pas besoin de faire quoi que ce soit.
1ère ÉTAPE: IMPORTANT: mise à jour de CKEDITOR textarea avec le contenu réel avant de soumettre
Prochaine ÉTAPE: Ensuite, après validation de votre code (qui Doit être la dernière étape)
OriginalL'auteur BHARGAV KAHAR