Foros del Web » Programando para Internet » Javascript »

Contar líneas en un textarea

Estas en el tema de Contar líneas en un textarea en el foro de Javascript en Foros del Web. Hola a todos, me estreno en este foro porque llevo un par de días intentando encontrar la manera de bloquear la escritura cuando se haya ...
  #1 (permalink)  
Antiguo 25/11/2004, 08:29
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
Contar líneas en un textarea

Hola a todos, me estreno en este foro porque llevo un par de días intentando encontrar la manera de bloquear la escritura cuando se haya alcanzado un número máxima de lineas, se que hay una etiqueta rows para las líneas "máximas" y un maxlength para que cuando se llegue al final de la linea salte a una nueva, sin embargo no consigo bloquear el número de líneas ya que cuando supero el indicado en rows sale el scroll y sigue permitiendo introducir datos...

Alguna idea de como hacerlo?? Muchas gracias y un saludo!
  #2 (permalink)  
Antiguo 25/11/2004, 16:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola sathan, bienvenido a los foros :

Supongo que tendría que ser algo así:

<html><body>
<form>
<textarea rows=10 cols=70 name=texto onkeyup="this.disabled = this.value.split('\n').length > 10;" >
</textarea>
<input value=limpiar type=button onclick="texto.value = ''; texto.disabled = false;" />
</form>
</body>
</html>

Solo he comprobado el evento onkeyup, pero se pueden comprobar otros eventos.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 26/11/2004, 02:55
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
Muchas gracias caricatos, pero lo que planteas tiene un problema, y es con el que me encontre desde un principio, si yo me lio a escribir y escribir sin pulsar el intro, el textarea me dejará ir metiendo datos... con lo que sobrepasaremos las 10 lineas que pusiste en la propuesta...

A ver si alguien más se anima..

Un saludo.
  #4 (permalink)  
Antiguo 26/11/2004, 03:44
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Una variante del de caricatos sería este:

Código HTML:
<html>
<head>
<script>

function contar(f){
linea=f['texto'].value.split("\n");
caracteres=1;
for(a=0;a<linea.length-1;a++){
caracteres+=Math.ceil(linea[a].length/70)*70;
}
caracteres+=linea[a].length;

f['pepe'].value=caracteres;
if(caracteres>699){f['texto'].disabled=true}
}
</script>
</head>

<body>
<form>
<textarea style="border:solid 1px black;overflow:hidden;"rows=11 cols=70 name=texto onkeydown="contar(this.form)" >
</textarea>
<input type="text" name="pepe" size="3">
<input value=limpiar type=button onclick="texto.value = ''; texto.disabled = false;" />
</form>
</body>
</html> 
Cuenta caracteres y cada salto añade caracteres hasta terminar la línea. El problema está en el enter que no lo captura bien con el onkeydown... ¿alguna sugerencia?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 29/11/2004, 06:47
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
Aqui os dejo el código por si alguien lo necesita algun dia no es lo más optimo pero creo que funciona
Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript">

function valida(){
	var lineas=1; //contador de líneas
	var caract=0;
	var contadorbucle=-1;
	var contadorpalabra= -1;
	var contadortotal =-1;
	var texto = document.form1.textarea.value;
	
	while (contadorbucle < document.form1.textarea.value.length){
   		contadorbucle = contadorbucle + 1;
		contadorpalabra=contadorpalabra+1;		
		//alert ('espacio!!');
		if (texto.charAt(contadorbucle)==' '){
			contadorpalabra=-1;
		}
		contadortotal=contadortotal + 1;
		if (texto.charAt(contadorbucle)=='\n'){
			lineas=lineas+1;
			contadorpalabra=-1;
			contadortotal=-1;
		}
		if (contadorpalabra > 0 && contadortotal==document.form1.textarea.cols){
		contadortotal=contadorpalabra;
		lineas=lineas+1;
		}
		
		if (contadortotal==document.form1.textarea.cols){
			lineas=lineas+1;
			contadorpalabra=0;
			contadortotal=0;
		}
		
		
	} 
	document.form1.text.value = contadorpalabra;
	document.form1.total.value = contadortotal;
	document.form1.lineas.value = lineas;
	if (lineas <= 3){
		return true;
		}else{
			alert ('asdad');
		return false;
		}
}

</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<form name="form1" method="post" action="">
  <p>
    <textarea name="textarea" cols="10" rows="5" onKeydown="return valida()"></textarea>
</p>
  <p>Contador letras de una palabra<br>
    <input type="text" name="text">
</p>
  <p>Contador total<br>
    <input name="total" type="text" id="total">
</p>
  <p>L&iacute;neas<br>
    <input name="lineas" type="text" id="lineas">
  </p>
</form>
</body>
</html> 
  #6 (permalink)  
Antiguo 29/11/2004, 07:06
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
alguno sabe como puedo meter un carácter borrar a una caja de text???
  #7 (permalink)  
Antiguo 29/11/2004, 07:14
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola sathan:

Si lo que quieres es mejorar la edición de texto, fíjate en los scripts que puse en este mensaje:

http://www.forosdelweb.com/showthrea...light=textarea

No sé muy bien si te será fácil adaptarlo a tu página.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 29/11/2004, 07:22
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
Aver igual no me expliqué bien :) lo que necesito es que una vez me ha hecho toda la comprobación y me he pasado de líneas, que me salte el alert ese que tengoo puesto y me haga un borrar carácter, ya que sino cuando intento pulsar la tecla de borrado, me vuelve a saltar el alert y no me deja cambiar nada.
De hecho lo ideal sería que cuando pulse tanto ALT, CTROL o BORRAR ni siquiera entre al bucle, me mande un true directamente...

No estoy muy puesto en javascript, sabéis como se haría esto?

Muchas gracias por la ayuda :)

Última edición por sathan; 29/11/2004 a las 07:32
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 07:29.