Tenemos un complemento interno de administrador de archivos/imágenes/documentos desarrollado para TinyMCE que todavía se transfiere a jQuery. Mientras tanto, algunos de nuestros proyectos que dependen de estas características deben usar la versión basada en prototipos de TinyMCE & jQuery.noConflict(). Sin embargo, esto funciona bien con una validación discreta en ASP.NET MVC 3, la validación en el envío ocurre antes de que se active la devolución de llamada de TinyMCE para copiar el contenido de TinyMCE al campo de formulario. ¿Es posible enganchar en un evento de prevalidación en la validación discreta?Validación no intrusiva de ASP.NET MVC 3, enviar y TinyMCE
Respuesta
Si está utilizando los botones de envío para enviar el formulario, intente esto:
$("input[type='submit']").click(function() {
tinyMCE.triggerSave();
});
Si usted no está usando los botones de envío, simplemente conectar en cualquier evento que ocurre inmediatamente antes de su presentación formulario y llame tinyMCE.triggerSave ()
Otra forma de hacerlo que le da más control es en la inicialización de TinyMCE. Esto funciona bien, excepto en un caso: la última instancia de TinyMCE que sale no activa el evento onDeactivate dentro de TinyMCE (solo se activa cuando va a otra instancia de TinyMCE). Así que aquí hay una manera de evitar esto: hasta ahora parece funcionar bien, pero YMMV.
Nota: Utilizaría esto junto con la respuesta aceptada. Este código activa la validación ya que el contenido se está editando en TinyMCE.
tinyMCE.init({
...
setup: ValidationTinyMceSetup
});
Y nuestro método de configuración:
function ValidationTinyMceSetup(editor) {
var $textarea = $('#' + editor.editorId);
// method to use to save editor contents to backend input field (TinyMCE hides real input and syncs it up
// with values on form submit) -- we need to sync up the hidden input fields and call the valid()
// method from jQuery unobtrusive validation if it is present
function save(editor) {
if (editor.isDirty) {
editor.save();
var $input = $('#' + editor.editorId);
if (typeof $input.valid === 'function')
$input.valid();
}
}
// Save tinyMCE contents to input field on key/up down (efficiently so IE-old friendly)
var typingTimerDown, typingTimerUp;
var triggerDownSaveInterval = 1000; // time in ms
var triggerUpSaveInterval = 500; // time in ms
editor.onKeyDown.add(function (editor) {
clearTimeout(typingTimerDown);
typingTimerDown = setTimeout(function() { save(editor) }, triggerDownSaveInterval);
});
editor.onKeyUp.add(function() {
clearTimeout(typingTimerUp);
typingTimerUp = setTimeout(function() { save(editor) }, triggerUpSaveInterval);
});
// Save tinyMCE contents to input field on deactivate (when focus leaves editor)
// this is via TAB
editor.onKeyDown.add(function (editor, event) {
if (event.keyCode === 9)
save(editor);
});
// this is when focus goes from one editor to another (however the last one never
// triggers -- need to enter another TinyMCE for event to trigger!)
editor.onDeactivate.add(function (editor) {
save(editor);
});
}
Por último, un punto de bonificación que no tiene relación alguna: se puede añadir un contador de caracteres mediante la inclusión de esta función en su fuente de JavaScript:
function CharacterCountDisplay(current, max) {
if (current <= max) {
return current + ' of ' + max + ' characters max';
}
else {
return '<span style="color: red;">' + current + '</span> of ' + max + ' characters';
}
}
Y en el método ValidationTinyMceSetup
anterior, agregar:
// check for character count data-val
var character_max = $textarea.attr('data-val-lengthignoretags-max');
if (typeof character_max === 'undefined' || character_max === false) {
character_max = $textarea.attr('data-val-length-max');
}
if (typeof character_max !== 'undefined' && character_max !== false) {
var character_count = function (editor) {
var currentLength = $(editor.getDoc().body).text().length;
editor.dom.setHTML(tinymce.DOM.get(editor.id + '_path_row'), CharacterCountDisplay(currentLength, character_max));
};
// on load show character count
editor.onInit.add(character_count);
// while typing update character count
editor.onKeyUp.add(character_count);
}
Para usar simplemente agrega un data-val-length-max="250"
a tu etiqueta textarea o lo que sea que estés usando TinyMCE.
- 1. ASP.NET MVC 3 validación no intrusiva y botones de radio
- 2. ASP .Net MVC 3 validación de clientes personalizados no intrusiva
- 3. ASP .Net MVC 3: Validación no intrusiva personalizada
- 4. ASP.NET MVC Validación no intrusiva: ¿por qué se necesita contexto?
- 5. asp.net mvc 3 resumen de validación que no se muestra a través de la validación no intrusiva
- 6. La validación no intrusiva del cliente ASP.Net MVC 3 no funciona con las listas desplegables
- 7. asp.net mvc 3 - ajax formulario de envío y validación
- 8. ASP.NET MVC 3 - Pregunta de validación
- 9. Problemas para obtener una validación no intrusiva trabajando con mvc 3 en jquery ajax post
- 10. Validación parcial de ASP.NET MVC 3 Modelos
- 11. jQuery validación no intrusiva en .NET MVC 3 - que muestra la marca de verificación de éxito
- 12. asp.net 4.5 Web Forms Validación no intrusiva jQuery Issue
- 13. Agregar un grupo utilizando jQuery validación no intrusiva
- 14. Asp.net MVC 3 de validación condicional con DataAnnotations
- 15. Verificar jquery la validación no intrusiva es verdadera por jQuery
- 16. ASP.NET MVC 3: Validación de lista de mensajes get
- 17. asp.net mvc 3 jquery agregando el mensaje de validación manualmente
- 18. TinyMCE y validación de formulario HTML5
- 19. ASP.NET MVC 3 Anotación de datos: Agregar validación dinámicamente
- 20. vista parcial sin atributos de validación (ASP.NET MVC 3)
- 21. ASP.NET MVC Validación de ViewState MAC no
- 22. ¿Alguien sabe de algún complemento de jQuery Mask que funcione con MVC? Validación no intrusiva?
- 23. ASP.net MVC 3 jQuery Validación; ¿Deshabilitar discretamente OnKeyUp?
- 24. Validación del modelo/ASP.NET MVC 3 - Atributo requerido condicional
- 25. ASP.NET MVC 3 Validación remota para permitir el valor original
- 26. Validación ASP.NET MVC de unicidad
- 27. ¿Cómo enviar un correo electrónico desde Asp.net Mvc-3?
- 28. Mezcla de la validación no intrusiva de asp mvc3 con el complemento de validación de jquery
- 29. ASP.NET MVC 3: Genere una validación discreta cuando BeginForm está en el diseño
- 30. ASP.Net MVC 3 & System.Data.Entity?
Esto funciona! Estaba pensando en ello y me preocupaba que algunas personas reclamaran errores con 'triggerSave()'. Lo hice de esta manera: en 'tinyMCE.init ({oninit: mySpecialSubmit, ...});' y 'mySpecialSubmit' tiene la llamada' triggerSave() '. ¡Funciona genial! ¡Gracias! – Cymen
No olvides poner eso dentro de '$ (document) .ready (function() {})'. –