Resulta muy útil si alguna vez utilizáis un editor de texto como tinyMCE, FCKeditor o similares, que permiten editar texto dándole cierto formato, añadiendo tags HTML para conseguir ese formato. Si necesitáis realizar una validación del número de caracteres que el usuario ha escrito pero no queréis contar los tags añadidos pódeis utilizar el siguiente truco:
//Función que devuelve la longitud del texto que se ha escrito en un Editor (TinyMCE) sin contar los tags HTML
function getlengthcaja(caja) {
var oEditor = tinyMCE.getInstanceById(caja) ;
//Se crea un elemento div, aunque podría ser cualquier otro (span, p, ...)
var mydiv = document.createElement("div");
//Aquí vamos a almacenar el contendio del Editor de texto
var contenido_sinTags;
//Metemos el contenido del editor de texto en el div que hemos creado antes
mydiv.innerHTML = oEditor.getContent();
//Si se trata de IE
if (document.all){
contenido_sinTags=mydiv.innerText;//Este es el KIT, La MAGIA, EL que Obtiene el texto sin tags
//Ahora un poco de expresiones regulares para eliminar los saltos de línea y los retornos de carro
re = new RegExp('\\n', 'gi');
contenido_sinTags=contenido_sinTags.replace(re,'');
re = new RegExp('\\r', 'gi');
contenido_sinTags=contenido_sinTags.replace(re,'');
}// Mozilla does not work with innerText
else {
contenido_sinTags=mydiv.textContent;//Este es el KIT, La MAGIA!!, EL que Obtiene el texto sin tags.
//Ahora un poco de expresiones regulares para eliminar los saltos de línea y los retornos de carro
re = new RegExp('\\n', 'gi');
contenido_sinTags=contenido_sinTags.replace(re,'');
re = new RegExp('\\r', 'gi');
contenido_sinTags=contenido_sinTags.replace(re,'');
}
//Devolvemos la longitud del texto, sin tags HTML ni retornos de carro ni saltos de línea
return contenido_sinTags.length;
}
El objeto RegExp se utiliza en javascript para generar expresiones regulares. Podría utilizarse un String directamente pero, en ese caso la sintaxis para escapar caracteres especiales es diferente.
new RegExp('\\n', 'gi');
'\\n' --> representa el \n (nueva línea)
'gi' --> g: para hacer una búsqueda global, en lugar de parar en la primera coincidencia; i: Ignorar mayúsculas y minúsculas
Más info sobre RegExp en: http://www.w3schools.com/jsref/jsref_obj_regexp.asp
0 comentarios:
Publicar un comentario