He estado usando el validador de Parsley por un tiempo y estoy muy contento con él. Sin embargo, me he encontrado con un pequeño problema, que realmente no puedo resolver.
El problema es este: Mi área de texto, que se reemplaza con Summernote, no se valida. Permítanme aclarar primero, porque sé cuál es el problema, pero no puedo encontrar una respuesta.
En mi CMS, el usuario puede editar el texto de una página a través de Summernote. Cuando se carga la página, el texto aparecerá en el editor. Al mirar en mi código fuente, veo esto:
<textarea name="content" class="summernote" required data-parsley-required>[The page information is shown, but I removed it because it it too long and unrelated to this topic.]</textarea>Cuando edito el texto, se valida normalmente. ¡PERO! Cuando elimino mi texto y envío el formulario cuando el editor está vacío, también se validará. Simplemente procesa el formulario y cuando la página se vuelve a cargar, no mostrará texto. Lógicamente, el campo de área de texto está vacío.
El problema aquí es que cuando la página se carga y el área de texto tiene contenido, la validación del área de texto verá que no está vacío, por lo que envío mi formulario. En cambio, quiero validar el área de texto REAL, donde el nombre de la clase es editable por notas .
Cuando el editor de texto está vacío, siempre dirá que está vacío. Incluso cuando pongo algo de texto en el editor, no se envía, simplemente porque en la carga de la página, el área de texto no tiene contenido.
Entonces mi pregunta es: ¿Cómo evito que los usuarios envíen un campo de texto vacío con Parsley, cuando estoy usando Summernote? Entonces, cuando el usuario elimina el texto del editor, el formulario no se envía y el usuario recibe un error que dice que el campo de texto está vacío.
¡Muchas gracias!
~ Miguel
Hice esta función personalizada simple que funcionó para mí.
<textarea id="mySummernote" name="mySummernote" data-parsley-summernote-required="" data-parsley-errors-container="#myErrors"></textarea> <div id="myErrors"></div> <script type="text/javascript"> window.Parsley.addValidator('summernoteRequired', { validateString: function(value,_value,_el) { var val = $($(_el.$element[0]).val()).text().trim(); if(val.length<1) return false; }, messages: { en: 'This is a required field.', it: "Questo valore è richiesto." } }); </script>Espero que esto pueda ser útil para usted. :)