Foros del Web » Programando para Internet » Javascript »

Ocultar y hacer visible un campo

Estas en el tema de Ocultar y hacer visible un campo en el foro de Javascript en Foros del Web. function mostrarOcultar(obj) { document.getElementById('ip').style.visibility = (obj.checked) ? 'visible' : 'hidden'; } <td align="center"> IP <input name="ver_ip" type="checkbox" onClick="mostrarOcultar(this)"> </td> <td> <input size="10" maxlength="20" style="visibility:hidden;" id="ip" ...
  #1 (permalink)  
Antiguo 24/04/2012, 10:26
 
Fecha de Ingreso: marzo-2011
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Ocultar y hacer visible un campo

function mostrarOcultar(obj) {
document.getElementById('ip').style.visibility = (obj.checked) ? 'visible' : 'hidden';
}

<td align="center">
IP <input name="ver_ip" type="checkbox" onClick="mostrarOcultar(this)">
</td>

<td>
<input size="10" maxlength="20" style="visibility:hidden;" id="ip" name="ip1" type="text" value="<?php echo $canales['IP']; ?>" >
</td>
con la funcion de arriba cuando habilito el checkbox me aparece el campo o me desaparece hasta aqui correcto, el problema lo tengo porque el codigo lo tengo en un while que me devuelve mas de un registro entonces solo me muestra y me oculta el primero se puede hacer algo

Gracias
  #2 (permalink)  
Antiguo 24/04/2012, 10:42
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 14 años, 6 meses
Puntos: 36
Respuesta: Ocultar y hacer visible un campo

el problema esta en que agarras el elemento ById entonces pon dinamico esa "id" y puedes enviarle el parametro de cual se trata junto con el objeto del checkbox por ejemplo:
Código PHP:
Ver original
  1. <td align="center">
  2. IP <input type="checkbox" onClick="mostrarOcultar(this,<? echo $algunvalorunicodetuconsulta.'_campo' ?>)"> 
  3. </td>
  4.  
  5. <td>
  6. <input size="10" maxlength="20" style="visibility:hidden;" id="<? echo $algunvalorunicodetuconsulta.'_campo' ?>" type="text" value=" <?php echo $canales['IP']; ?>" >
  7. </td>


entonces en el javascript
Código Javascript:
Ver original
  1. function mostrarOcultar(obj,campo) {
  2. document.getElementById(campo).style.visibility = (obj.checked) ? 'visible' : 'hidden';
  3. }
  #3 (permalink)  
Antiguo 24/04/2012, 10:46
 
Fecha de Ingreso: marzo-2011
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ocultar y hacer visible un campo

Ok gracias por la respuesta, pero la verdad es que necesitaria que me ocultara o mostrara todos los campos con esa ID se que debe ser unica pero lo que necesito es eso no que me oculte sino todos los campos de esa columna

Gracias
  #4 (permalink)  
Antiguo 24/04/2012, 10:54
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 14 años, 6 meses
Puntos: 36
Respuesta: Ocultar y hacer visible un campo

aa ok.. disculpa entonces entendí mal.. entonces simplemente puedes agarrar los elementos por su clase
Código Javascript:
Ver original
  1. document.getElementsByClassName = function(cl) {
  2. var retnode = [];
  3. var myclass = new RegExp('\\b'+cl+'\\b');
  4. var elem = this.getElementsByTagName('*');
  5. for (var i = 0; i < elem.length; i++) {
  6. var classes = elem[i].className;
  7. if (myclass.test(classes)) retnode.push(elem[i]);
  8. }
  9. return retnode;
  10. };

por ejemplo esta función te regresa todos los elementos que tengan la misma clase (así puede ser repetida), entonces ya solo ciclas el array y pones visible o no segun sea a cada elemento.
O también puedes si es un form con los element y viendo los tipos, aunque me iría mas por la de la clase por si tiene mas input type=text o cosas así..
  #5 (permalink)  
Antiguo 24/04/2012, 10:59
 
Fecha de Ingreso: marzo-2011
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ocultar y hacer visible un campo

Te agredezco tu ayuda pero leo el codigo y me quedo igual podrias explicarme algo mas

Gracias
  #6 (permalink)  
Antiguo 24/04/2012, 11:13
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 14 años, 6 meses
Puntos: 36
Respuesta: Ocultar y hacer visible un campo

es que al ser id necesitan ser únicas.. lo que puedes hacer es ponerle class='' por ejemplo:
Código HTML:
Ver original
  1.  .invisible { visibility:hidden; }
  2. <td>
  3. <input size="10" maxlength="20" class='invisible' type="text" value="<?php echo $canales['IP']; ?>" >
  4. </td>

(lo de style lo puse extra el punto es ponerle class='algo')

entonces cuando dispares el evento que oculta o pone visible todos los campos llamas esta funcion en vez de la que tienes pero mandandole tmb el nombre de la clase si la quieres usar para depsues: onClick="pruebaFuncion(this,'invisible')"

Código Javascript:
Ver original
  1. function pruebaFuncion(obj,cl) {
  2.     var myclass = new RegExp('\\b'+cl+'\\b');
  3.     var elem = document.getElementsByTagName('*');
  4.     for (var i = 0; i < elem.length; i++) {
  5.         var classes = elem[i].className;
  6.         if (myclass.test(classes)) { elem[i].style.visibility =  (obj.checked) ? 'visible' : 'hidden'; }
  7.     }
  8. }

¿Que es lo que hace?
Pues sencillo.. a la hora que llamas la funcion le mandas el objeto de checkbox (como antes) y a parte el nombre de la clase que tienen tus input que quieres ocultar o mostrar ('invisible').. entonces primero selecciona los elementos de la pagina y los filtra por esa clase que enviaste después les pone la visibilidad segun sea el checkbox.. puede sonar reburujado y pues eso de sacar los elementos es otro ciclo extra pero si tienes mas input del mismo tipo es dificil seleccionar solo esos, es por eso que puse la clase como indicador.

Última edición por Dafonz; 24/04/2012 a las 11:30
  #7 (permalink)  
Antiguo 24/04/2012, 11:51
 
Fecha de Ingreso: marzo-2011
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ocultar y hacer visible un campo

Dentro de java

<SCRIPT LANGUAGE="JavaScript">
function pruebaFuncion(obj,cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) elem[i].style.visibility ? 'visible' : 'hidden';
}
}
</script>

Dentro del body

<style>
.invisible { visibility:hidden; }
</style>


Checkbox

IP <input name="ver_ip" type="checkbox" onClick="pruebaFuncion(this,'invisible')">

Campo que debe mostrar y ocultar

<td>
<input size="10" maxlength="20" class='invisible' name="ip1" type="text" value="<?php echo $canales['IP']; ?>" >
</td>

Algo no hago bien porque me aparecen ocultos pero no los muestra, no he querido cambiar nada por no cagarla
  #8 (permalink)  
Antiguo 24/04/2012, 11:56
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 14 años, 6 meses
Puntos: 36
Respuesta: Ocultar y hacer visible un campo

Lo acabo de probar y si funciona ahi te va:
Javascript
Código Javascript:
Ver original
  1. function pruebaFuncion(obj,cl) {
  2.             var myclass = new RegExp('\\b'+cl+'\\b');
  3.             var elem = document.getElementsByTagName('*');
  4.             for (var i = 0; i < elem.length; i++) {
  5.                 var classes = elem[i].className;
  6.                 if (myclass.test(classes)) { elem[i].style.visibility =  (obj.checked) ? 'visible' : 'hidden'; }
  7.             }
  8.         }

Si tienes hoja de estilos o si quieres crearla dentro de la misma head o algo:
Código HTML:
Ver original
  1. .invisible { visibility:hidden; }

Checkbox
<input type="checkbox" onClick="pruebaFuncion(this,'invisible')" />

Campos: (los repeti a mano pero debe ser la misma en while)

Código HTML:
Ver original
  1. <input size="10" maxlength="20" class='invisible' type="text" value="Este SI" >
  2. <input size="10" maxlength="20" class='invisible' type="text" value="Este SI" >
  3. <input size="10" maxlength="20" class='invisible' type="text" value="Este SI" >
  4. <input size="10" maxlength="20" class='invisible' type="text" value="Este SI" >
  5. <input size="10" maxlength="20" class='invisible' type="text" value="Este SI" >
  6. <input size="10" maxlength="20" class='invisible' type="text" value="Este SI" >
  7. <input size="10" maxlength="20" type="text" value="Este NO" >
  8. <input size="10" maxlength="20" class='invisible' type="text" value="Este SI" >

Los campos con class='Invisible' se ocultan, los demas no
  #9 (permalink)  
Antiguo 24/04/2012, 12:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ocultar y hacer visible un campo

Muchas, muchisimas gracias.

Solucionado
  #10 (permalink)  
Antiguo 24/04/2012, 12:28
 
Fecha de Ingreso: marzo-2011
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ocultar y hacer visible un campo

A ver si me sacas de la otra duda, el campo text lo tengo dentro de un TD y cierto es que el campo me lo oculta pero me reserva el espacio del td sabes si se podria hacer algo para que no reservara el espacio

Gracias
  #11 (permalink)  
Antiguo 24/04/2012, 12:30
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 14 años, 6 meses
Puntos: 36
Respuesta: Ocultar y hacer visible un campo

en vez de ponerle la clase al input ponle al td.. en si esa función te oculta cualquier elemento que tenga esa clase independientemente de su tipo. También te recomendaría que en vez de visibility uses la proiedad display
elem[i].style.display= (obj.checked) ? 'block' : 'none';

Esto para que no deje el espacio en la tabla, osea como un no se ve pero ahí esta..

Última edición por Dafonz; 24/04/2012 a las 12:39
  #12 (permalink)  
Antiguo 25/04/2012, 02:00
 
Fecha de Ingreso: marzo-2011
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ocultar y hacer visible un campo

Ahora si todo solucionado como bien dije antes

Muchisimas Gracias

Etiquetas: funcion, input, php, visible, campos
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 16:48.