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<script type="text/javascript">
function checkevent(e)
{
var obj=e.srcElement || e.target;
var objeto = document.getElementById(obj.name);
var evento = e.type;
if ( obj.name == "email" )
{
{ objeto.value = ""; }
if(evento == "blur" && objeto.value == "" )
}
if ( obj.name == "pass" )
{
if(evento == "focus" && objeto.value == "su contraseña")
{
var formulario = document.getElementById("identificacion");
var nuevotextbox = document.createElement("input");
/*nuevotextbox.setAttribute("value", "");
nuevotextbox.setAttribute("type", "password");*/
nuevotextbox.value = "";
nuevotextbox.type = "password";
nuevotextbox.name = "pass";
formulario.replaceChild(nuevotextbox, objeto);
nuevotextbox.id = "pass"
nuevotextbox.focus();
}
if(evento == "blur" && objeto.value == "")
{ objeto.value = "su contraseña"; objeto.type = "text"; }
}
}
</script>
Código html:
Ver original<form id="ide" action="index.php" method="post" enctype="application/x-www-form-urlencoded"> <label>Email:
<input id="email" type="text" name="email" title="Email de usuario" value="aqui_tu@email" size="20" /></label> <label>Contrase
ña:
<input id="pass" type="text" name="pass" value="aquí tu contraseña" size="10" /></label> <input type="submit" value="OK" />
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?