Cita:
Iniciado por oms02 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 originalvar 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 originalvar 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<a id="dato1" href="#" data-validate="0">ok
</a><br/> <a id="dato2" href="#" data-validate="0">ok
</a><br/> <a id="dato3" href="#" data-validate="0">ok
</a><br/> <a id="dato4" href="#" data-validate="1">ok
</a><br/> <a id="dato5" href="#" data-validate="1">ok
</a><br/> <a id="dato6" href="#" data-validate="1">ok
</a><br/> <a id="dato7" href="#" data-validate="2">ok
</a><br/> <a id="dato8" href="#" data-validate="2">ok
</a><br/> <a id="dato9" href="#" data-validate="2">ok
</a><br/> <a id="dato10" href="#" data-validate="2">ok
</a><br/>
Puedes cambiar los a por input
Código Javascript
:
Ver original<script language="javascript" type="text/javascript">
$(document).ready(function(){
var funciones = ["validarNombre","validarClave","validarEmail"];
$('a[id^="dato"]').click(function(){
var funcion = $(this).attr("data-validate");
window[funciones[funcion]]();
});
});
</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]();