Contar caracteres de un campo con JavaScript
Con el fin de hacer las cosas mas fáciles y entendibles al usuario he trabajado un poco la interactividad que tienen estos con los formularios.
br>
Al principio no le prestaba mucha atención a este tema. Simplemente creaba un campo con su correspondiente etiqueta descriptiva y ya esta.
br>
Ahora para ayudar al usuario a rellenar los campos adecuadamente y evitar posibles errores, utilizo una función que indica cuando se paso el número máximo de caracteres, cuantos lleva escritos y añadir un máximo de caracteres permitidos.
br>
Esto también da un mayor atractivo al formulario.
br>
Ejemplo de uso:
<!-- incluir fichero con la funcion en JavaScript --> <script src="./contarCaracteres.js" type="text/JavaScript"></script> <!-- Campo al que contaremos los caracteres * Llamamos a la función con el evento "onKeyDown". * Le pasamos como parametros: - el id del campo (this.id) - el id del div donde se mostrara el nº de caracteres actuales - el color que tendra el campo en caso de sobrepasar el máximo de caracteres - el máximo de caracteres permitidos. --> <input id="ejemplo" onkeydown="contarCaracteres(this.id, 'nCaracteres','#FF0000',10)" type="text" /> <!-- div donde mostraremos el numero de caracteres --> Caracteres:<div id='nCaracteres'></div>
Función:
function contarCaracteres(campo, id,color,maximo) { /** * variable que contiene el div donde vamos a * escribir y borrar. */ var div; /** * variable que guardara el numero total de * caracteres que tiene el campo que estamos * contando. */ var cTotal; /** * variable que creara el nodo de texto y el valor * que mostraremos. */ var tmp; //Asignar div al div con el que trabajaremos div = document.getElementById(id); //Borrar el contenido del div while(div.hasChildNodes()) { div.removeChild(div.lastChild); } //Obtener el número de caracteres del campo en cTotal. campo = document.getElementById(campo); cTotal = campo.value.length + 1; /** * Añadirle el atributo maxlenght para evitar que se escriban * mas caracteres de los indicados. */ campo.setAttribute("maxlength",maximo); /** * Si se supera el máximo de caracteres permitidos ponemos el fondo * del campo en rojo ó el color indicado. */ if(cTotal > maximo ) { campo.style.backgroundColor = color; } else { campo.style.backgroundColor = "#FFFFFF"; } /** * Escribimos el total de caracteres en el div indicado. * Para hacer esto creamos un nodo de texto con el valor de * cTotal. El nodo lo asignamos a tmp */ tmp = document.createTextNode(cTotal); //Añadimos el contenido de tmp al div indicado. div.appendChild(tmp); }
No hay artículos relacionados




















He visto en el ejemplo del campo donde introduces los caracteres que al pulsar retroceso te suma un caracter al contador, es decir, si llevas 9 caracteres y pulsar el retroceso para borrar el caracter en el lugar 9 en vez de ponerte 8 en el contador te suma uno al numero que tenias y te coloca un 10. Esto provoca que si borras todos los caracteres y te quedas sin ninguno en el formulario el contador pone 2. Saludos.