Ver Mensaje Individual
  #30 (permalink)  
Antiguo 14/04/2009, 11:04
Avatar de Dude--
Dude--
 
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Método y/u objeto de origen

Si haces click en el textbox "pass" debe cambiar el type a password y mantener el foco. El problema surge en esta última parte, pero tras el código también pongo otras dudas que necesito resolver.

Código javascript:
Ver original
  1. <script type="text/javascript">
  2.         function checkevent(e)
  3.         {
  4.             var obj=e.srcElement || e.target;
  5.             var objeto = document.getElementById(obj.name);
  6.             var evento = e.type;
  7.            
  8.             if ( obj.name == "email" )
  9.             {
  10.                 if(evento == "focus" && objeto.value == "[email protected]")
  11.                 { objeto.value = ""; }
  12.                 if(evento == "blur" && objeto.value == "" )
  13.                 { objeto.value = "[email protected]"; }
  14.             }
  15.            
  16.             if ( obj.name == "pass" )
  17.             {
  18.                 if(evento == "focus" && objeto.value == "su contraseña")
  19.                 {
  20.                     var formulario = document.getElementById("identificacion");
  21.                     var nuevotextbox = document.createElement("input");
  22.                     /*nuevotextbox.setAttribute("value", "");
  23.                     nuevotextbox.setAttribute("type", "password");*/
  24.                     nuevotextbox.value = "";
  25.                     nuevotextbox.type = "password";
  26.                     nuevotextbox.name = "pass";
  27.                     formulario.replaceChild(nuevotextbox, objeto);
  28.                     nuevotextbox.id = "pass"
  29. nuevotextbox.focus();
  30.                 }
  31.                 if(evento == "blur" && objeto.value == "")
  32.                 { objeto.value = "su contraseña"; objeto.type = "text"; }
  33.             }
  34.    
  35.         }
  36. </script>
Código html:
Ver original
  1. <form id="ide" action="index.php" method="post" enctype="application/x-www-form-urlencoded">
  2.     <label>Email:<input id="email" type="text" name="email" title="Email de usuario" value="aqui_tu@email" size="20"  /></label>
  3.     <label>Contraseña:<input id="pass" type="text" name="pass"  value="aquí tu contraseña" size="10"  /></label>
  4.     <label><input  type="checkbox" name="autologin" />Guardar</label>
  5.     <input type="submit" value="OK" />
  6. </form>

Primer problema:
Mirando el post en el que me basé para establecer donde debía situar la asignación del id al nuevo objeto (nuevotextbox.id = "pass"), deduzco que aparece detrás de "replaceChild" porque no puede haber dos objetos con el mismo ID a la vez, sin embargo si lo colocas antes funciona igualmente. ¿Es quizás porque el objeto no "existe" hasta que se reemplaza en el cuerpo de la página web, es decir, cuando se utiliza "replaceChild" y por tanto no hay "colision" dando igual donde coloques la asignación de id al nuevo objeto? no lo tengo nada claro.

Segundo problema:
¿Qué diferencia hay entre: nuevotextbox.setAttribute("type", "password") y nuevotextbox.type = "password"? ¿cual es correcto usar y por qué?

Tercer problema
nuevotextbox.focus(); en este caso no funciona en IE, sin embargo tal y como se puede ver aquí, focus() si funciona en IE, por lo que me pregunto ¿por qué no funciona en mi caso?
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."

Última edición por Dude--; 14/04/2009 a las 15:39