Foros del Web » Programando para Internet » Javascript »

Abrir un TextArea al hacer click sobre una caja de texto

Estas en el tema de Abrir un TextArea al hacer click sobre una caja de texto en el foro de Javascript en Foros del Web. Hola necesito ayuda con un problema. Necesito que al hacer click sobre una caja de texto pueda abrirse un textarea desapareciendo por completo la caja ...
  #1 (permalink)  
Antiguo 10/10/2010, 03:59
 
Fecha de Ingreso: diciembre-2005
Mensajes: 46
Antigüedad: 18 años, 4 meses
Puntos: 0
Pregunta Abrir un TextArea al hacer click sobre una caja de texto

Hola necesito ayuda con un problema.

Necesito que al hacer click sobre una caja de texto pueda abrirse un textarea desapareciendo por completo la caja de texto.

Yo he conseguido con el codigo hacerla invisible o no, pero claro el problema es estan ahi las dos, y claro ocupa su espacio y se nota que hay algo ahi oculto.

Y la idea es que al hacer click sobre la caja de texto, esta desaparezca y solo aparezca en ese mismo espacio el textarea.

Este es el codigo que tengo de momento

Código:
<html><head><script language="JavaScript">
function A(f)
{
  var vis="hidden";
  var visible="visible";
  f.c.style.visibility=vis;
  f.tarea.style.visibility=visible;
}

</script></head><body><form name="a">

<table width="50%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td rowspan="2">Descripcion</td>
    <td><input type="text" name="c" value="" onClick="A(this.form,this.value);" style="visibility:visible"></td>
  </tr>
  <tr>
    <td><textarea name="tarea" cols="20" rows="5" style="visibility:hidden" spry:sort=""></textarea></td>
  </tr>
 </table>
</form>
</body></html>
  #2 (permalink)  
Antiguo 10/10/2010, 04:40
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Abrir un TextArea al hacer click sobre una caja de texto

Hola elmenda

Cambia visibility (visible/hidden) por display (none/block)

Saludos,
  #3 (permalink)  
Antiguo 10/10/2010, 06:05
 
Fecha de Ingreso: diciembre-2005
Mensajes: 46
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Abrir un TextArea al hacer click sobre una caja de texto

Muchas gracias era lo que buscaba!

Ahora la duda me surge si por ejemplo como resultado de una consulta en BD me devolviera dos resultados, con dos cajas de texto a convertir en textarea.

Por seguir en el ejemplo y como lo he echo en otros casos añadiria al nombre un numero, en mi ejemplo seria c1, c2 y tarea1 y tarea2 como consecuencia de dos resultados en la BD.

Y a la hora de hacer click en la caja de texto llamar al javascript pasarle ese numero para saber cual tiene que hacerlo, aqui lo cutre seria hacer un if-else en javascript para todos los numeros del 1 al ....... y claro eso es muy cutre.

Como podria hacerlo para que fuera automatico y evitar if-else

Dejo el codigo que tengo (lo tengo para solo dos casos con if-else):

Código:
<html><head><script language="JavaScript">
function A(f,valor,elemento)
{
  var vis="none";
  var visible="block";
  var n = elemento;
  if(n == 1){
  f.c1.style.display=vis;
  f.tarea1.style.display=visible;
  f.tarea1.value = valor;
  }
  else if(n == 2){
  f.c2.style.display=vis;
  f.tarea2.style.display=visible;
  f.tarea2.value = valor;
  }
}

</script>
</head>
<body>

<form name="a">

<table width="50%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td rowspan="2">Descripcion</td>
    <td><input type="text" name="c1" value="Text" onClick="A(this.form,this.value,1);" style="visibility:visible"></td>
  </tr>
  <tr>
    <td><textarea name="tarea1" cols="20" rows="5" style="display:none"></textarea></td>
  </tr>
   <tr>
    <td rowspan="2">Descripcion</td>
    <td><input type="text" name="c2" value="Text" onClick="A(this.form,this.value,2);" style="visibility:visible"></td>
  </tr>
  <tr>
    <td><textarea name="tarea2" cols="20" rows="5" style="display:none"></textarea></td>
  </tr>
 </table>
</form>
</body></html>
Ando repasando los arrays en javaScript porque me creo que es algo de eso para solucionarlo
  #4 (permalink)  
Antiguo 10/10/2010, 07:49
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Abrir un TextArea al hacer click sobre una caja de texto

Prueba así:
Código Javascript:
Ver original
  1. function camb(c){
  2.  switch (c.nodeName.toLowerCase()){
  3.   case 'input':
  4.    var t=document.createElement('textarea');
  5.    t.setAttribute('cols','20');
  6.    t.setAttribute('rows','5');
  7.    t.setAttribute('id','tarea'+c.id.substr(1,c.id.length-1));
  8.    t.setAttribute('name','tarea'+c.name.substr(1,c.name.length-1));
  9.    t.setAttribute('onblur','camb(this);');
  10.    t.value = c.value;
  11.    c.form.insertBefore(t,c.nextSibling);
  12.    t.focus();
  13.   break;
  14.   case 'textarea':
  15.    var i=document.createElement('input');
  16.    i.setAttribute('type','text');
  17.    i.setAttribute('id','c'+c.id.substr(5,c.id.length-1));
  18.    i.setAttribute('name','c'+c.name.substr(5,c.name.length-1));
  19.    i.setAttribute('onfocus','camb(this);');
  20.    i.value = c.value;
  21.    c.form.insertBefore(i,c);
  22.   break;
  23.  }
  24.  c.parentNode.removeChild(c);
  25. }
Código HTML:
Ver original
  1. <form name="a" action="" method="post">
  2. <input type='text' id="c1" name='c1' onfocus="camb(this);" />
  3. <br />
  4. <input type="text" id="c2" name="c2" onfocus="camb(this);" />
  5. <br />
  6. <input type="submit" value="Enviar" />
  7. </form>
En vez de ocultar y mostrar los campos, los vas borrando y creando. Esto es más útil porque sino aunque esté oculto te llegan los resultados del input y el textarea.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 10/10/2010, 07:53
 
Fecha de Ingreso: diciembre-2005
Mensajes: 46
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Abrir un TextArea al hacer click sobre una caja de texto

Cita:
Iniciado por _cronos2 Ver Mensaje
Prueba así:
Código Javascript:
Ver original
  1. function camb(c){
  2.  switch (c.nodeName.toLowerCase()){
  3.   case 'input':
  4.    var t=document.createElement('textarea');
  5.    t.setAttribute('cols','20');
  6.    t.setAttribute('rows','5');
  7.    t.setAttribute('id','tarea'+c.id.substr(1,c.id.length-1));
  8.    t.setAttribute('name','tarea'+c.name.substr(1,c.name.length-1));
  9.    t.setAttribute('onblur','camb(this);');
  10.    t.value = c.value;
  11.    c.form.insertBefore(t,c.nextSibling);
  12.    t.focus();
  13.   break;
  14.   case 'textarea':
  15.    var i=document.createElement('input');
  16.    i.setAttribute('type','text');
  17.    i.setAttribute('id','c'+c.id.substr(5,c.id.length-1));
  18.    i.setAttribute('name','c'+c.name.substr(5,c.name.length-1));
  19.    i.setAttribute('onfocus','camb(this);');
  20.    i.value = c.value;
  21.    c.form.insertBefore(i,c);
  22.   break;
  23.  }
  24.  c.parentNode.removeChild(c);
  25. }
Código HTML:
Ver original
  1. <form name="a" action="" method="post">
  2. <input type='text' id="c1" name='c1' onfocus="camb(this);" />
  3. <br />
  4. <input type="text" id="c2" name="c2" onfocus="camb(this);" />
  5. <br />
  6. <input type="submit" value="Enviar" />
  7. </form>
En vez de ocultar y mostrar los campos, los vas borrando y creando. Esto es más útil porque sino aunque esté oculto te llegan los resultados del input y el textarea.
Saludos (:
Muchisimas gracias!!!!! va perfecto

Etiquetas: caja, textarea
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 11:08.