Foros del Web » Programando para Internet » Javascript »

Extender textarea

Estas en el tema de Extender textarea en el foro de Javascript en Foros del Web. Hola, ya postie esto en css, pero igual tengo la duda si es en css y javascript o un mix de los dos. Vamos a ...
  #1 (permalink)  
Antiguo 25/11/2009, 10:55
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Extender textarea

Hola, ya postie esto en css, pero igual tengo la duda si es en css y javascript o un mix de los dos. Vamos a mi duda.
Cita:
Bueno, mi consulta es si puedo extender un textarea, alargarlo, como facebook, que al escribir, el textarea siempre tiene la altura que el texto, bueno, tiene un maximo, eso calculo que se hara con max-height(css), lo que quiero saber es como se hace para que se extienda, bueno, una imagen vale mas que mil palabras.
Lo explico de vuelta, a medida que yo salto de linea, no aparece la flechita para bajar, si no que el textarea se agranda, eso es lo que quiero lograr.
  #2 (permalink)  
Antiguo 25/11/2009, 11:22
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: Extender textarea

Prueba con este codigo:

Código html:
Ver original
  1. <textarea rows=1 onkeyup="agrandar()" name="texto"></textarea>
  2.  
  3. function agrandar(){
  4. area=texto.value;
  5. lineas=area.split("\n");
  6. for(i in lineas){
  7. var ubound=i;
  8. }
  9. ubound=new Number(ubound)+1;
  10. texto.rows=ubound;
  11. }
  #3 (permalink)  
Antiguo 25/11/2009, 11:22
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: Extender textarea

El código anterior sólo funciona con IE, este funciona también con Mozilla:
Código:
<script>
function agrandar(){
area=document.forms['formulario'].texto.value;
lineas=area.split("\n");
for(i in lineas){
var ubound=i;
}
ubound=new Number(ubound)+1;
document.forms['formulario'].texto.rows=ubound;
}
</script>

<form name=formulario>
<textarea rows=1 onkeyup="agrandar()" name="texto"></textarea>
</form>

Última edición por bebo; 25/11/2009 a las 11:42
  #4 (permalink)  
Antiguo 25/11/2009, 11:41
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: Extender textarea

Pense que iba a funcionar, pero no, raro que no funcione.
  #5 (permalink)  
Antiguo 25/11/2009, 11:43
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: Extender textarea

¿Con que navegador lo probaste?
  #6 (permalink)  
Antiguo 25/11/2009, 11:45
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: Extender textarea

Chrome y luego firefox.
No habia visto el codigo que dijiste que funciona con firefox, ya lo pruebo.
  #7 (permalink)  
Antiguo 25/11/2009, 11:49
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: Extender textarea

El tema es que si escribo todo seguido se crea la flechita, y no se agranda el textarea, eso ya que la funcion solo se ejecuta onkeyup=""..

Última edición por almagropaco_; 25/11/2009 a las 12:16
  #8 (permalink)  
Antiguo 25/11/2009, 11:53
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: Extender textarea

Problema: Si escribo todo seguido sin salto de linea no se agranda, habra que usar un metodo diferente a onkeyup, igual muchas gracias, el tema de ponerle un maximo lo solucione con max-height, css
  #9 (permalink)  
Antiguo 27/11/2009, 12:59
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: Extender textarea

Trata con esto:
Código:
<script>
function agrandar(){
area=document.forms['formulario'].texto.value;
lineas=area.split("\n");
for(i in lineas){
var ubound=i;
}
ubound=new Number(ubound)+1;
document.forms['formulario'].texto.rows=ubound;
var linea=new Array();
for(i in lineas){
linea[i]=new Number(lineas[i].length);
}
var max=linea.sort(function(a,b){return a-b});
var maximo=new String(max).split(",");
for(i in maximo){var num_maximo=i}//alert(num_maximo);
document.forms['formulario'].texto.cols=maximo[num_maximo]
}
</script>
<form name=formulario>
Texto:
<textarea rows=1 onkeyup="agrandar()" name="texto"></textarea>
</form>
  #10 (permalink)  
Antiguo 27/11/2009, 13:47
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Extender textarea

Hola

Justo hace un momento acabo de finalizar un script para un colega. Por si los que ya te dejaron no funciona

Código javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
  6. <script type="text/javascript">
  7. var nuevaFila = {
  8.  
  9. Evento: function (elemento,nomevento,funcion) {
  10.   if (elemento.attachEvent)
  11.   {
  12.       var f=function(){
  13.         funcion.call(elemento,window.event);
  14.     }
  15.     elemento.attachEvent('on'+nomevento,f);
  16.     return true;
  17.   }
  18.   else  
  19.     if (elemento.addEventListener)
  20.     {
  21.       elemento.addEventListener(nomevento,funcion,false);
  22.       return true;
  23.     }
  24.     else
  25.       return false;
  26. },
  27.  
  28.  
  29.  
  30. init: function(){
  31. var elem = document.getElementById("txt");
  32.         nuevaFila.Evento(elem, 'keyup', nuevaFila.CreaFila);
  33.     },
  34.  
  35.  
  36. CreaFila: function (ev) {
  37. var num_caracteresIrreales;
  38. var num_caracteresReales;
  39. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  40. var elem = document.getElementById("txt");
  41. num_caracteresIrreales = elem.rows * 26;
  42. num_caracteresReales = elem.value.length;
  43.  
  44. if (keyCode == 8) {
  45. if ((num_caracteresReales < (num_caracteresIrreales-26)) && (elem.rows >=2)) {
  46. elem.rows-= 1;
  47. }
  48.  
  49. } else if (num_caracteresReales == num_caracteresIrreales) {
  50. elem.rows+= 1;
  51.  
  52. } else if (keyCode == 13) {
  53. elem.rows+= 1;
  54. num_caracteresIrreales = 26;
  55. num_caracteresReales = 0;
  56. }
  57. }
  58. }
  59. nuevaFila.Evento(window, 'load', nuevaFila.init);
  60. </script>
  61. </head>
  62. <body>
  63. <textarea name="txt" id="txt" cols="30" rows="1" style="overflow:hidden;"></textarea>
  64. </body>
  65. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 06/12/2009, 14:49
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: Extender textarea

Probe todos, ninguno me funciona a la perfeccion.
Encontre un script hecho con jQuery, http://www.unwrongest.com/projects/elastic/#demo
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 12:57.