Foros del Web » Programando para Internet » Javascript »

Cambiar atributo de un form con DOM

Estas en el tema de Cambiar atributo de un form con DOM en el foro de Javascript en Foros del Web. Hola! Tengo un formulario que en principio esta no visible, pero que al pulsar la palabra Login se vuelva visible en la misma página. Quiero ...
  #1 (permalink)  
Antiguo 26/07/2008, 12:34
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Cambiar atributo de un form con DOM

Hola!
Tengo un formulario que en principio esta no visible, pero que al pulsar la palabra Login se vuelva visible en la misma página. Quiero hacerlo a través de DOM con una función, pero en principio no sé como cambiar el atributo style="display:none" del form desde la función.
Este es el código:

<title>Index</title>
<script type="text/javascript" src="scripts/funciones.js"></script>
</head>

<body>
<a href="" onclick="return visibleFormLogin()">Login</a>
<div id="div_form_login" style="display:none">
<form id="login-form" method="post" >
<div id="div_email">
<label id="label_email" for="email">Email:</label>
<input id="email" name="email" type="text" />
</div>
<div id="div_password">
<label id="label_password" for="password">Password:</label>
<input id="password" name="password" type="password" />
</div>
<div id="submit">
<input id="entrar" name="entrar" value="Entrar" type="submit" />
</div>
</form>
</div>
</body>


Y por ahora lo que llevo de la función....

function visibleFormLogin(){
var loginForm = document.getElementById("login-form");
...........
}


Básicamente es que no se cómo cambiar el atributo de visibilidad, bueno, y si encima se vuelve visible poco a poco mejor que mejor.
¿Alguna idea??

Gracias!!
  #2 (permalink)  
Antiguo 26/07/2008, 13:29
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Cambiar atributo de un form con DOM

Bueno, lo he estado intentando, y lo más que consigo es que se muestro un instante el form pero vuelve a desaparecer.
Este es el código:

Cita:
<script type="text/javascript" src="scripts/funciones.js"></script>
</head>

<body>
<a href="" onclick="return visibleFormLogin()">Login</a>
<div id="div_form_login" style="visibility:hidden">
<form id="login-form" action="" method="post" >
<div id="div_email">
<label id="label_email" for="email">Email:</label>
<input id="email" name="email" type="text" />
</div>
<div id="div_password">
<label id="label_password" for="password">Password:</label>
<input id="password" name="password" type="password" />
</div>
<div id="submit">
<input id="entrar" name="entrar" value="Entrar" type="submit" />
</div>
</form>
</div>

</body>
Y esta la función:

Cita:
function visibleFormLogin(){
var form = document.getElementById("login-form");
form.setAttribute('style', 'visibility: visible;');
//o también.....
//form.style.visibility = 'visible';
}
Que debo cambiar para que el cambio del atributo visibility sea permanente???

Gracias!!!
  #3 (permalink)  
Antiguo 26/07/2008, 14:19
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Cambiar atributo de un form con DOM

Amigo jmagago84,

En tu funcion debes cambiar el valor de visibility del div (el cual se encuentra en hidden) y no del form.

Tambien en tu link <a> es necesario que devuelvas false (return false;) para que no se realice la accion del link.

asi queda tu codigo:

Cita:
<html>
<head>
<script>
<!--
function visibleFormLogin(){
var div_form_login = document.getElementById("div_form_login");
div_form_login.setAttribute('style', 'visibility: visible;');
}
//-->
</script>

<script type="text/javascript" src="scripts/funciones.js"></script>

</head>

<body>

<a href="" onclick="visibleFormLogin();return false;">Login</a>

<div id="div_form_login" style="visibility:hidden">
<form id="login-form" action="" method="post" >
<div id="div_email">
<label id="label_email" for="email">Email:</label>
<input id="email" name="email" type="text" />
</div>
<div id="div_password">
<label id="label_password" for="password">Password:</label>
<input id="password" name="password" type="password" />
</div>
<div id="submit">
<input id="entrar" name="entrar" value="Entrar" type="submit" />
</div>
</form>
</div>

</body>


</html>

Espero que te sirva. Saludos

PD: Tambien quieres que se oculte al volver a clickear?
  #4 (permalink)  
Antiguo 26/07/2008, 19:13
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Cambiar atributo de un form con DOM

Muchas Gracias!!!, voy a probar el código. La verdad que también quisiera que se ocultara el form volviendo a pinchar el enlace.

Lo voy a intentar y ya te digo.

Byee!!!
  #5 (permalink)  
Antiguo 26/07/2008, 19:34
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Cambiar atributo de un form con DOM

Hola jmagago84,

Ok, y para que aparezca y tambien oculte el script queda asi:

Código PHP:
<script type="text/javascript">
<!--
function 
visibleFormLogin(){
var 
div_form_login document.getElementById("div_form_login");
div_form_login.style.visibility div_form_login.style.visibility=="visible"?"hidden" "visible";
}
//-->
</script> 
Recuerda que es posible obtener y modificar el style de un elemento DOM de la siguiente forma:
Por ejemplo, la propiedad visibility:
Cita:
elemento.style.visibility
W3Schools


Saludos
  #6 (permalink)  
Antiguo 26/07/2008, 20:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Cambiar atributo de un form con DOM

Buff, y yo llevo aqui un rato intentándolo y no me sale, mira como lo estaba intentando:

Cita:
function visibleFormLogin(){
var div = document.getElementById("div_form_login");
var visible = div.getAttribute("style");

if (visible.visibility == "hidden"){
div.setAttribute('style', 'visibility: visible;');
}
else{
div.setAttribute('style', 'visibility: hidden');
}
return false;
}
Lo estaba intentado hacer de una forma más extensa, crees que se podría hacer con el if????, es que creo que fallo a la hora del if ()

Gracias!!!

Última edición por jmagago84; 26/07/2008 a las 20:27
  #7 (permalink)  
Antiguo 26/07/2008, 20:33
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Cambiar atributo de un form con DOM

Cita:
function visibleFormLogin(){
var div_form_login = document.getElementById("div_form_login");

if (div_form_login.style.visibility == "hidden"){
div_form_login.setAttribute('style', 'visibility: visible;');
}
else{
div_form_login.setAttribute('style', 'visibility: hidden');
}
return false;
}
Lo he hecho asi, aunque claro está que tu forma es mucho más profesional y la que voy a utilizar y no ésta.

No me iba porque lo hacia con getAttribute y ya me liaba.

Bueno, sabes por casualidad de algún efecto o propiedad para que el form aparezca y desaparezca gradualmente??? y no instantaneamente??

De verdad que muchas gracias!
  #8 (permalink)  
Antiguo 26/07/2008, 21:52
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Cambiar atributo de un form con DOM

De nada!

Asi?
Código PHP:
<html>
<
head>
<
script>
//<!--
var intervalId=null;
var 
alpha 0;
var 
sentido 1;
var 
incremento 5;
var 
velocidad 10;
document.div_form_login document.getElementById("div_form_login"); 

function 
visibleFormLogin(){

    if(
intervalId == null)
        
intervalId setInterval("change_alpha()",velocidad);

}

function 
change_alpha()
{
     
     
alpha += (incremento sentido);
    
    if(
navigator.userAgent.match("MSIE"))
        
div_form_login.filters.alpha.opacity alpha;
    else
        
div_form_login.style.opacity = (alpha/100).toString();


     if(
alpha>=100 || alpha<=0)
        {
        
sentido sentido==1?-1:1;
        
clearInterval(intervalId);
        
intervalId=null;
        
        }
}
//-->
</script>
<style>
#div_form_login
{
 filter: alpha(opacity=50);
 background-color: red;
}
</style>

<script type="text/javascript" src="scripts/funciones.js"></script>

</head>

<body>

<a href="javascript:void(visibleFormLogin());">Login</a>

<div id="div_form_login" style="opacity: 0.0">
<form id="login-form" action="" method="post" >
<div id="div_email">
<label id="label_email" for="email">Email:</label>
<input id="email" name="email" type="text" />
</div>
<div id="div_password">
<label id="label_password" for="password">Password:</label>
<input id="password" name="password" type="password" />
</div>
<div id="submit">
<input id="entrar" name="entrar" value="Entrar" type="submit" />
</div>
</form>
</div>


</body>


</html> 
Dime si te sirve

--edit--
Estoy tratando de hacer que funcione en IE (En firefox todo ok)

Última edición por xbx; 26/07/2008 a las 22:18
  #9 (permalink)  
Antiguo 26/07/2008, 23:12
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Cambiar atributo de un form con DOM

OK!, lo he provado y va perfe!!, aunque se me escapa de mi entendimiento, jeje pero me viene de lujo

Deberias darme unas clases particulares a ver si aprendo algo.

Un abrazo!
  #10 (permalink)  
Antiguo 26/07/2008, 23:42
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Cambiar atributo de un form con DOM

Puedes preguntarme lo que quieras del código estaré encatado de ayudarte.

Un abrazo
  #11 (permalink)  
Antiguo 26/07/2008, 23:59
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Cambiar atributo de un form con DOM

Mira xbx, en digg.com está el efecto que quiero conseguir, en el link login, échale un vistazo, después de tanto buscar he encontrado unas páginas hablando sobre ello. Te las pongo:

http://66.102.9.104/translate_c?hl=e...T7LmVICpR0dm0Q

Esta es traducida por google.

http://www.harrymaugans.com/2007/03/...cript-and-css/

http://www.harrymaugans.com/2007/03/...cript-and-css/

Y estas son otras en ingles.

A ver que te parecen y me cuentas

Byee
  #12 (permalink)  
Antiguo 27/07/2008, 00:19
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Cambiar atributo de un form con DOM

Finalmente logré hacer que fucione en IE.
Para mi amigo IE es necesario que el div tenga definido el width. De lo contrario no funciona.

Aqui te dejo el código

Código PHP:
<html>
<
head>
<
script>
//<!--
var intervalId=null;
var 
alpha 0;
var 
sentido 1;
var 
incremento 5;
var 
velocidad 10;
document.div_form_login document.getElementById("div_form_login"); 

function 
visibleFormLogin(){

    if(
intervalId == null)
        
intervalId setInterval("change_alpha()",velocidad);

}

function 
change_alpha()
{
     
     
alpha += (incremento sentido);
    
    if(
navigator.userAgent.match("MSIE"))
        
div_form_login.filters.alpha.opacity alpha;
    else
        
div_form_login.style.opacity = (alpha/100).toString();


     if(
alpha>=100 || alpha<=0)
        {
        
sentido sentido==1?-1:1;
        
clearInterval(intervalId);
        
intervalId=null;
        
        }
}
//-->
</script>
<style>
#div_form_login

 width: 100px;

 filter: alpha(opacity=0);
 background-color: red;
}
</style>

<script type="text/javascript" src="scripts/funciones.js"></script>

</head>

<body>

<a href="javascript:void(visibleFormLogin());">Login</a>


    <div id="div_form_login" style="opacity: 0.0">
        <form id="login-form" action="" method="post" >
        <div id="div_email">
        <label id="label_email" for="email">Email:</label>
        <input id="email" name="email" type="text" />
        </div>
        <div id="div_password">
        <label id="label_password" for="password">Password:</label>
        <input id="password" name="password" type="password" />
        </div>
        <div id="submit">
        <input id="entrar" name="entrar" value="Entrar" type="submit" />
        </div>
        </form>
    </div>

</div>


</body>


</html> 
Ahorita miro eso de digg
  #13 (permalink)  
Antiguo 27/07/2008, 00:33
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Cambiar atributo de un form con DOM

Cita:
Mira xbx, en digg.com está el efecto que quiero conseguir, en el link login, échale un vistazo, después de tanto buscar he encontrado unas páginas hablando sobre ello. Te las pongo:

http://66.102.9.104/translate_c?hl=e...T7LmVICpR0dm0Q

Esta es traducida por google.

http://www.harrymaugans.com/2007/03/...cript-and-css/

http://www.harrymaugans.com/2007/03/...cript-and-css/

Y estas son otras en ingles.

A ver que te parecen y me cuentas
Veo... Es parecido a lo que hicimos recién.
Tu quieres que un div aparezca y el otro desaparezca?

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 13:00.