Ver Mensaje Individual
  #10 (permalink)  
Antiguo 06/04/2009, 22:59
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

Código:
<script type="text/javascript">
function textbox(ident,x)
{
	switch(x)
	{
		case "in": 
		{
			if ( ident == "email"){document.getElementById(ident).value = ""; break;}
			if ( ident == "pass") {document.getElementById(ident).value = ""; document.getElementById(ident).type = "password"; break;}
		}
		case "out": 
		{
			if ( ident == "email" && document.getElementById(ident).value == ""){document.getElementById(ident).value = "aqui_tu@email"; break;}
			if ( ident == "pass")
			{ 
				var y = document.getElementById(ident).value;
				if ( y == ""){document.getElementById(ident).type = "text"; document.getElementById(ident).value = "aqui tu contraseña"; break;}
			}
		}
}
</script>
<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="tu@email" size="20" onfocus="textbox('email','in')" onblur="textbox('email','out')"  /></label>
	<label>Contraseña:<input id="pass" type="text" name="pass"  value="aquí tu contraseña" size="10"  onfocus="textbox('pass','in')" onblur="textbox('pass',out')" /></label>
	<label><input  type="checkbox" name="autologin" />Guardar</label>
	<input type="submit" value="OK" /> 
</form>
Como se puede observar la función se llama desde el formulario mediante los eventos onfocus y onblur, si pudiera identificar desde que input se esta produciendo el evento no tendría que pasarle el parámetro "ident" a la función y si supiera que evento ha llamado a la función tampoco tendría que pasarle el parámetro "in" u "out".

Respecto a la duda de seleccionar un elemento mediante el getElementName es para prescindir del uso del atributo "id" en los "input". Pero no se como localizarlo, tal y como comentó Panino5001, para poder llamarlo por su índice.

A parte de esas dudas, encontré y modifique un poco el código de la barra de google de este foro para intentar comprenderlo:
Código:
<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>
	<label><input  type="checkbox" name="autologin" />Guardar</label>
	<input type="submit" value="OK" /> 
</form>

<script>
(
	function()
	{
		var elemento = document.getElementById("email");
		elemento.onfocus = function(){elemento.type = "password";};
		elemento.onblur = function(){elemento.type = "text"; };
	}
)
();
</script>
Y tengo varias dudas al respecto:
1. ¿Por qué este script no lleva declarado el atributo type="text/javascript"?
2. ¿Por qué si coloco el <script> antes del <form> no funciona?
3. ¿Por qué la función esta englobada en paréntesis y después hay un "();"? ¿es acaso la forma de autollamar a la función?
4. ¿Hay alguna forma de hacer el codigo siguiente sin utilizar funtion()?
Código:
elemento.onfocus = function(){elemento.type = "password";};
Es decir, algo tipo:
elemento.onfocus = (elemento.type = "password";)
o bien:
if ( elemento.onfocus )
{elemento.type = "password";}
__________________
"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--; 06/04/2009 a las 23:11