La Web del Programador: Comunidad de Programadores
 
    Pregunta:  24629 - EVITAR ENVíO DATOS DE FORMULARIO
Autor:  Eugenio Cardoso Mena
Tengo un formulario, que se envía por e-mail, con una caja de texto que quiero limitar a un máximo de 1000 caracteres. Quiero evitar que el usuario teclee más de esos 1000 caracteres, o bién, si teclea más evitar que el formulario se envíe.
Gracias por anticipado.

  Respuesta:  Rodrigo Espinoza
con la solucion que das... Que pasa si le borras caracteres??
decrementas el contador?

una solucion sencilla y mas segura seria especificarle a la caja de texto la propiedad maxlength="1000" y asi evitas que sobrepase el limite de entrada.

Saludos!

  Respuesta:  Eugenio Cardoso Mena
He encontrado una posible solución a mi pregunta. Tras hacerlo me he dado cuenta que era bastante sencillo. No obstante ahí va por si puede servirle a alguien. No se si funciona con NESCAPE.
/* ************************
La página .htm debe constar de un formulario (que aquí se llamaa "formulario")
con una caja de texto (que aquí se llama "S1") de varias filas para teclear el texto a enviar. También debe tener otra caja de texto (que aquí se llama "T1") de una sola fila que contendrá el nº de caracteres tecleados. Y por último tendrá el botón para enviar el formulario.
Entre las etiquetas <textarea> y </textarea> se debe poner la llamada a esta función de la forma siguiente: onkeypress="contar();"
************************* */

var limite=9 //poner 1 menos de los deseados

function contar() {

/* **************************************
Si te pasas del limite de caracteres avisar y dejar la caja de texto con el nº de caracteres deseados aunque se sigan tecleando más ya que se substrae la cadena correspondiente al limite de caracteres y se aplica a la caja de texto.
************************************** */

if(this.formulario.S1.value.length>limite) {
alert("Ya has tecleado más de "+(limite+1)+" caracteres")
this.formulario.S1.value=(this.formulario.S1.value).substring(0,limite);
}

/* ***************************************
Si no te has pasado de los caracteres sumar 1 para avisar en otra caja de texto más pequeña del nº de caracteres que se llevan tecleados.
**************************************** */

else {
this.formulario.T1.value=this.formulario.S1.value.length+1
}
}