Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/06/2009, 15:10
Avatar de omar1977
omar1977
 
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 11 meses
Puntos: 4
Exclamación pasar arreglo como parametro a funcion (onkeydown)

Holas les cuento la idea es la siguiente....
tengo una funcion que corre de lo mejor, pero el problema que es un poco estatica la idea es hacerla un poco mas dinamica y usable..... veamos un poco de codigo para entender mejor

Esta es la primera funcion que hice
Código HTML:
<input type='text' id='uno' value='texto' onkeydown='next(event,\'dos\');'>
<input type='text' id='dos' value=''> 
la funcion
Código HTML:
function next(e, f, n){
	tecla = (document.all) ? e.KeyCode : e.which
	if(tecla == 13){
		document.getElementById(n).focus();
		document.getElementById(n).select();
	}
}
lo que hace.... al presionar enter en el primer input (tecla=13) salta al siguiente input.



la funcion mejorada
Código HTML:
<input type='text' id='uno' value='texto' onkeydown='onkeyFnc(event,13,'alert('algo')');'>
<input type='text' id='dos' value=''> 
Código HTML:
function onkeyFnc(e, k, fnc){
    k = k ? k : 13;
    tecla = (document.all) ? e.KeyCode : e.which
    if(tecla == k){
        if(fnc){
            eval(fnc);
        }
    }
}
lo que hace : al presionar enter (tecla 13) en el input envia la funcion alert que es ejecutada por onkeyFnc, no necesariamente debe ser un alert puede ser cualquier otra al igual que el numero de la tecla (13 enter, 107 signo +).


ahora lo que necesito realmente es pasar las funciones como parametro
veamos
Código HTML:
<input type='text' id='uno' value='texto' 
onkeydown='onkeyFnc( event,array(13=>'alert(algo1)',107=>'alert(algo2')) );'
>
<input type='text' id='dos' value=''> 
la funcion
Código HTML:
function onkeyFncArray(e, fncs){
    tecla = (document.all) ? e.KeyCode : e.which
    eval(fncs[tecla]);
}
lo que hace (y este es el problema), lo mismo que la anterios pero esta vez le enviamos las teclas y las funciones a evaluar en un arreglo es decir
si apreta enter (13) entonces alert(algo1)
si apreta + (107) entonces alert(algo2)
y asi, seria un poco mas amplia y podria apoyar con mas teclas y mas funciones...

entonces la pregunta es : como envio un arreglo como paremetro a la funcion

Código:
onkeydown='onkeyFnc( event, array(13=>'alert(algo1)',107=>'alert(algo2')) );'

PD: las comillas simples son para ejemplificar y dar a entender la problematica (no son correctas).
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo