J'ai un intégré à ckeditor p> et jQuery validate Plugin . Et le code est comme celui-ci p> Le code fonctionne tout simplement bien, mais lorsque je saisie mon N'y a-t-il pas un moyen de le valider correctement (sans avoir à cliquer deux fois). P> p> zone texte code>
textarea code> élément, je reçois toujours le message d'erreur jusqu'à ce que je puisse Cliquez deux fois sur là. I.E. Je dois soumettre ma page deux fois de manière à ce que je ne parole pas le message d'erreur même si
textarea code> n'est pas vide. P>
9 Réponses :
Jetez un look ici
En gros, vous avez besoin Appeler p> avant d'exécuter la validation. p> il suffit de remplacer édition forte> p> Editor1 code> avec le nom de votre Texarea. P> < p> Appelez ensuite p>
Que dois-je exécuter ce code? Jeter un coup d'oeil à ma fonction de validate
Ne fonctionne pas pour moi. J'ai fait ce champ requis mais le formulaire soumet sans le remplir.
Mettez ceci dans le bouton Soumettre MouseDown () Evénement:
$("#submit").mousedown(function(){ for (var i in CKEDITOR.instances){ CKEDITOR.instances[i].updateElement(); } });
Utilisez-le dans votre JavaScript dans lequel vous validez votre formulaire. Il mettra à jour votre CKEditor et assignera la valeur de CKEditor à votre Textarea auquel vous l'intégrez.
Il devrait fonctionner avant que le formulaire soit soumis: p>
JQuery Validator validez uniquement les champs de saisie visibles mais CKeditor rend la Textarea cachée l'empêchant d'être validée. P>
Est-ce vérifié? J'ai essayé toutes les suggestions ci-dessus et je n'ai toujours pas réussi à le faire fonctionner. Je sais que mon code de validation était bien parce que cela a fonctionné super sans ckeditor. J'ai écrit une validation manuelle. Je sais donc que le Texareas se mettait mis à jour lorsque j'ai appelé la méthode ckedititor.Instance.updateElement (). Mais lorsque je soumets mon formulaire avec JQuery Validate et CKeditor, la validation ne déclenche pas du tout.
Le Textarea que vous voyez dans CKeditor n'est pas le même textarea que vous définissez dans votre HTML. CKEditor le remplace avec son propre éditeur, caché ainsi la Texarea normale que vous définissez.
Si vous l'attachez comme
function SubmitEvent(){ var editor = $('#Detail').ckeditorGet(); editor.updateElement(); if($("#EventForm").valid()) { $('#EventForm').submit(); } }
Si vous utilisez Spry, c'est ce qui a fonctionné pour moi ...
Je préférerais mettre à jour chaque instance sur l'événement BLUR, de sorte que vous n'avez pas besoin de changer quoi que ce soit sur votre fonction de soumission! :)
J'ai combiné vos sugestions et faire cette petite triche qui fonctionne sans problème.
My Code: P>
$("#submit-templateeditor").click(function(){ CKEDITOR.instances.templateeditor.updateElement(); $("#create-message-form-3").validate({ rules: { templateeditor: "required" }, messages: { templateeditor: "Please add some code before continue" }, errorPlacement: function(error, element){ $(element).each(function (){ $(this).parent('div').find('p.error').html(error); }); } }); });
Merci pour votre réponse! Cette question a 3 ans, alors qu'il est bon que vous ayez trouvé une solution au problème, la question avait déjà été résolue, amener ce post retour à l'activité ne sert rien. Dans le futur, veuillez m'abstenir de ramener de longs messages morts :)
La fonction jQuery .validate () fournit une option "OnSubmit" pour effectuer une action personnalisée avant la validation.
Par défaut, il est défini sur true.
Je l'ai utilisé dans mon projet et ça fonctionne très bien. Il s'agit d'une approche plus propre et beaucoup plus facile à comprendre.
Reportez-vous à http://jqueryvalidation.org/validate#onSubmit p> p>