Foros del Web » Programando para Internet » Javascript »

controlar un <TEXTAREA>

Estas en el tema de controlar un <TEXTAREA> en el foro de Javascript en Foros del Web. disculpen alguien me podría decir como controlo en un textarea que un usuario pueda introducir solo las lineas que yo quiero por ejemplo 5 filas ...
  #1 (permalink)  
Antiguo 11/01/2003, 10:12
 
Fecha de Ingreso: enero-2002
Mensajes: 90
Antigüedad: 22 años, 3 meses
Puntos: 0
controlar un <TEXTAREA>

disculpen alguien me podría decir como controlo en un textarea
que un usuario pueda introducir solo las lineas que yo quiero
por ejemplo 5 filas y luego de esto no pueda seguir escribiendo otras lineas
  #2 (permalink)  
Antiguo 11/01/2003, 10:52
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola,

bueno, mediante script se pueden contralar los caracteres y las palabras pero las lineas.... no veo yo la forma de lograrlo sin que sea una chapuza que dé más problemas de los que pueda arreglar.

supongo que sería cuestión de que calcules los caracteres que más o menos te puedan entrar en esas 5lineas y restringir la entrada de caracteres a esa cantidad. Pero siempre puede haber un cambio de párrafo dejando una linea en blanco y yá se te iría todo a una sexta linea.

Si a alguien se le ocurre otra forma....


saludos
  #3 (permalink)  
Antiguo 11/01/2003, 13:46
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 889
Antigüedad: 22 años, 4 meses
Puntos: 4
Se me ocurre una manera. Haber que os parece:
Código PHP:
<html>
<
head>
<
script>
var 
lineas 5;
var 
caracteres_linea 20;
var 
total lineas caracteres_linea;
function 
valida(){
if (
texto.value.length total){
texto.value texto.value.substring(0total);}}
</script>
</head>
<body>
Solo puedes escribir <script>document.write(lineas)</script> líneas en el textarea <br>
<script>
document.write("<textarea name=texto rows="+ lineas +" cols=" +
caracteres_linea + " onKeyDown=valida() onKeyUp=valida() onchange=valida()></textarea>")
</script>
</body>
</html> 
Saludos!!
  #4 (permalink)  
Antiguo 13/01/2003, 07:24
 
Fecha de Ingreso: noviembre-2002
Ubicación: Washington, DC
Mensajes: 822
Antigüedad: 21 años, 5 meses
Puntos: 5
Lo más utilizado y recomendado es como dijo tunait, controlar el número de caracteres en vez de número de líneas.

Este código que te pondré te podría complicar más, pero puede resolverte si es urgentísima la situación.

En IE:

Código:
<html>
<head>
<title>blah</title>
<script language="javascript">
//Desarrollado por: J. Markus
//Adaptado por: I. Y. Cruz
//06/2002
function mitodo(textarea,maxlength, maxLines)
{
var elinput = textarea.value;
var largo = elinput.length;
var dlineas = elinput.split("\n");
var nlineas = dlineas.length;
var lineaactual = eval(parseInt(dlineas.length)-1);
var string = dlineas[lineaactual];
var elultimo = string.charAt(eval(largo-1));
var elanterior = "";
if (nlineas > maxLines){
    lineaactual = maxLines;}

for(var i=0;i<lineaactual;i++){
    elanterior +=dlineas[i];}

var keyCode = document.layers ? event.which : event.keyCode;
if (keyCode==13){
    if (dlineas.length >= eval(maxLines+1)){
         textarea.value = elinput.substr(0, eval(largo-2));
         textarea.value = elanterior.substring(0,eval(elanterior.length-1));    }
    else {
         return true;    }
}
if (string.length > maxlength - 1)
    textarea.value = elanterior +string.substr(0, maxlength);
return;
}
</script>
</head>
<body>
<form name="miforma">
<textarea name="nombredetextarea" cols="40" rows="4" onkeyup="javascript:mitodo(nombredetextarea,30,3);"></textarea><br>
</form>
</body>
</html>
Nota: La palabra javascript va junta, la puse en roja para que el foro no la separara. El textarea está imitado a 3 líneas en un textarea de 4 y cada una tiene límite de 30 caracteres . Puedes escribir el límite que deseas. Repito...en mi opinión también, más utilizado, estético, llevadero y conocido es restringir el número de caracteres en vez del num. de líneas.
__________________
Yanira

Última edición por Yanix; 13/01/2003 a las 07:39
  #5 (permalink)  
Antiguo 23/01/2003, 09:53
 
Fecha de Ingreso: enero-2002
Mensajes: 90
Antigüedad: 22 años, 3 meses
Puntos: 0

gracias a todos por la ayuda se los agradesco.
con la ultima forma funciona bien.
auque el codigo es un poco complicado.
lo unico que le modifique es que no salga la barra scrool de la derecha con STYLE="overflow: hidden".

gracias..
  #6 (permalink)  
Antiguo 23/01/2003, 13:13
 
Fecha de Ingreso: enero-2002
Mensajes: 90
Antigüedad: 22 años, 3 meses
Puntos: 0
<html>
<head>
<title>blah</title>
<script language="jscript">
//Desarrollado por: J. Markus
//Adaptado por: I. Y. Cruz
//06/2002
function mitodo(textarea,maxlength, maxLines)
{
var elinput = textarea.value;
var largo = elinput.length;
var dlineas = elinput.split("\n");
var nlineas = dlineas.length;
var lineaactual = eval(parseInt(dlineas.length)-1);
var string = dlineas[lineaactual];
var elultimo = string.charAt(eval(largo-1));
var elanterior = "";
if (nlineas > maxLines){
lineaactual = maxLines;}

for(var i=0;i<lineaactual;i++){
elanterior +=dlineas[i];}

var keyCode = document.layers ? event.which : event.keyCode;
if (keyCode==13){
if (dlineas.length >= eval(maxLines+1)){
textarea.value = elinput.substr(0, eval(largo-2));
textarea.value = elanterior.substring(0,eval(elanterior.length-1)); }
else {
return true; }
}
if (string.length > maxlength - 1)
textarea.value = elanterior +string.substr(0, maxlength);
return;
}
</script>
</head>
<body>
<form name="miforma">
<textarea STYLE="overflow:hidden" name="nombredetextarea" cols="40" rows="4" onkeyup="mitodo(nombredetextarea,30,3);"></textarea><br>
</form>
</body>
</html>


bueno en algunos exploradores 5 no me estava funcionando.
y le cambie javascript por jscript de Ms
  #7 (permalink)  
Antiguo 23/01/2003, 13:28
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Mejor movemos este post al foro de javascript que estará más adecuado
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 01:01.