Foros del Web » Programando para Internet » Javascript »

area de texto en formulario con tamaño máximo

Estas en el tema de area de texto en formulario con tamaño máximo en el foro de Javascript en Foros del Web. Saludos al foro: Tengo un campo en un formulario de inserción de datos que debe ocupar 180 caracteres. Como comprendereis es un campo bastante largo ...
  #1 (permalink)  
Antiguo 16/07/2003, 02:50
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 20 años, 10 meses
Puntos: 0
area de texto en formulario con tamaño máximo

Saludos al foro:
Tengo un campo en un formulario de inserción de datos que debe ocupar 180 caracteres. Como comprendereis es un campo bastante largo y a mí no me gustan nada las barras de desplazamiento, entonces en vez de hacerlo en un campo de texto lo he hecho en un area de texto. Mi idea era hacerla de 60 caracteres por 3 lineas, pero mi sorpresa es que no me deja fijar el tamaño máximo del area de texto, con lo que cuando escribo más de 180 caracteres al pulsar el boton de enviar el formulario me da un error la base de datos y me dice que me he pasado del tamaño del campo.
¿Es posible simular el mismo efecto de otra forma que no sea usando un area de texto?. O sea que cuando el usuario cubra más de 180 caracteres en el formulario no pueda seguir insertando texto.

Gracias a todos
  #2 (permalink)  
Antiguo 16/07/2003, 03:22
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
En principio, la solución no estaría en ASP.

En un textarea, a priori, no puedes fiajar el número máximo de caracteres. Tendrías que recurrir, por ejemplo a Javascript, para que cuando se envie el formulario compruebe antes la longitud del texto introducido. Evidentemente, se puede hacer con ASP, pero eso implicaría enviar el formulario, procesarlo haciendo la comprobación de la longitud del texto y volver a enviarlo si esta es excesiva. Con lo cual se perdería, creo yo, demasiado tiempo.
También puedes hacer que según se vaya escribiendo el textarea compruebe la longitud del texto y se impida escribir más.

Te dejo un ejemplo para esto:

Código:
<html>
<head>
<script language="JavaScript">
function comprobar(texto){
if(texto.length>179){
texto = texto.substr(0,179);
document.form1.textarea.value = texto;
}
document.getElementById("cuenta").innerHTML=texto.length+1+" caracteres. (180 máx.)";
}
</script>
</head>

<body>
<form name="form1" method="post" action="">
  <textarea name="textarea" cols="80" rows="3" onKeyDown="comprobar(this.value)"></textarea>
<div id="cuenta"></div>
</form>
</body>
</html>
Otra cosita más. Dices que da un error en la base de datos. Los campos en formato texto, al menos de Access, permiten 50 caracteres por defecto. Lo puedes ampliar, pero sólo hasta 255.

Espero que te sirva.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!

Última edición por Bravenap; 16/07/2003 a las 03:32
  #3 (permalink)  
Antiguo 16/07/2003, 10:07
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 20 años, 10 meses
Puntos: 0
Saludos al foro:
El moderdor del foro de ASP ha trasladado mi pregunta a este foro.
El ejemplo lo he probado y funciona pero solo con un campo con dos o más campos al llegar a los 180 caracteres me copia el contenido del primer campo en el segundo.
He intentado para adaptarlo pero no soy capaz, podría alguien decirme como puedo hacerlo?.
Gracias

Última edición por ciberpata; 16/07/2003 a las 11:51
  #4 (permalink)  
Antiguo 16/07/2003, 17:30
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
tendrías qeu pasarle el nombre del campo sobre el que estás.

Código:
onKeyDown="comprobar(this.value,this.name)"
Lo que pasa es que no me acuerdo bien cómo se usaba luego el valor pasado, ya que esto no sirve:

Código:
function comprobar(texto,nombre){
...
....
document.form1.nombre.value=texto;
}
Me suena que era algo así como usar "eval":

Código:
objeto=eval("document.form1."+nombre);
objeto.value=texto
A ver si alguien nos echa una mano.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 17/07/2003, 04:11
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 20 años, 10 meses
Puntos: 0
Saludos al foro:
Por resumir, tengo un campo en un formulario de inserción de datos que debe ocupar 180 caracteres. Como comprendereis es un campo bastante largo y a mí no me gustan nada las barras de desplazamiento, entonces en vez de hacerlo en un campo de texto lo he hecho en un area de texto. Mi idea era hacerla de 60 caracteres por 3 lineas, pero mi sorpresa es que no me deja fijar el tamaño máximo del area de texto, con lo que cuando escribo más de 180 caracteres al pulsar el boton de enviar el formulario me da un error la base de datos y me dice que me he pasado del tamaño del campo.
Para arreglar este problema me han mandado este código. Pero solo es valido para un campo. Cuando añado más de un campo funciona ma.
Podría retocar el código alguno de ustedes para que funcione con varios campos y decirme como puedo añadirlos.

Les envío el código:

<script language="JavaScript">
function comprobar(texto){
if(texto.length>179){
texto = texto.substr(0,179);
document.form1.textarea.value = texto;
}
document.getElementById("cuenta").innerHTML=texto. length+1+" caracteres. (180 máx.)";
}
</script>
</head>

<body>
<form name="form1" method="post" action="">
<textarea name="textarea" cols="80" rows="3" onKeyDown="comprobar(this.value)"></textarea>
<div id="cuenta"></div>
</form>
</body>
</html>

Gracias a todos por su ayuda.
  #6 (permalink)  
Antiguo 17/07/2003, 16:21
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Hola ciberpata. Me parece que has tenido un pequeño lapsus. Vamos a ver, respondes en un tema qeu tú has abierto y vuelves a escribir el mismo mensaje que habías puesto al principio al que le incluyes el código que te acabo de pasar unos mensajes más arriba. Cuando hice esto, me preguntaste cómo hacer para que funcione con varios campos y te respondí con algo que ya he comprobado que funciona.

Entonces, ¿a qué viene este mensaje de nuevo?

Supongo que habrá sido un lapsus como ya dije antes.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #7 (permalink)  
Antiguo 18/07/2003, 09:29
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 20 años, 10 meses
Puntos: 0
Saludos al foro:
Bravenap, mis disculpas, creo que me hice un lio intentando editar el mensaje y lo volví a publicar.
Gracias y perdona, por si te he molestado a tí o al alguien. No era mi intención.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:37.