Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/08/2012, 10:16
Avatar de Dradi7
Dradi7
 
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: compactar codigo con funciones "personalizadas"

Cita:
Iniciado por oms02 Ver Mensaje
Hola Dradi7

Lo que ocurre es que las funciones que se deben ejecutar al hacer el focusout son diferentes para cada input.

he conseguido que al menos se lea el array "funciones" y se produzca la llamada a dichas funciones:
Código Javascript:
Ver original
  1. var funciones = [validaNombre(),validaClave(),validaMail()];

pero ahora el problema se ha traducido en que dicha llamada me la hace al cargar la pagina (logico supongo, pues leera el array)...asi que ahora es el focusout el problema...
OJO que no necesariamente por compactar el código estas acelerando la carga y el uso de recursos.

Bueno en cuanto a porque tu código ejecuta los procedimientos es por esto

Código Javascript:
Ver original
  1. var funciones = [validaNombre(),validaClave(),validaMail()];

al hacer esto estas realizando una función que sea "auto ejecutable" y siempre lo va a ejecutar como lo estabas haciendo antes estaba bien.

Si quieres hacerlo de una manera sencilla, y poco codigo puedes hacer lo siguiente usando atributos data

Código HTML:
Ver original
  1. <a id="dato1" href="#" data-validate="0">ok</a><br/>
  2. <a id="dato2" href="#" data-validate="0">ok</a><br/>
  3. <a id="dato3" href="#" data-validate="0">ok</a><br/>
  4. <a id="dato4" href="#" data-validate="1">ok</a><br/>
  5. <a id="dato5" href="#" data-validate="1">ok</a><br/>
  6. <a id="dato6" href="#" data-validate="1">ok</a><br/>
  7. <a id="dato7" href="#" data-validate="2">ok</a><br/>
  8. <a id="dato8" href="#" data-validate="2">ok</a><br/>
  9. <a id="dato9" href="#" data-validate="2">ok</a><br/>
  10. <a id="dato10" href="#" data-validate="2">ok</a><br/>

Puedes cambiar los a por input

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.     $(document).ready(function(){
  3.         var funciones = ["validarNombre","validarClave","validarEmail"];
  4.         $('a[id^="dato"]').click(function(){
  5.             var funcion = $(this).attr("data-validate");
  6.             window[funciones[funcion]]();
  7.         });
  8.     });
  9. </script>

otra forma seria poner en los mismos data-validate el nombre de la función a validar y ya no seria necesaria crear la variable funciones y lo llamarías de frente así window[funcion]();
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones