Foros del Web » Programando para Internet » Javascript »

pasar arreglo como parametro a funcion (onkeydown)

Estas en el tema de pasar arreglo como parametro a funcion (onkeydown) en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/06/2009, 15:10
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 9 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
  #2 (permalink)  
Antiguo 05/06/2009, 15:26
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años, 1 mes
Puntos: 89
Respuesta: pasar arreglo como parametro a funcion (onkeydown)

Discúlpame. Pero no entendí la pregunta. Lo que haces lo entiendo, pero lo que quieres hacer es pasar un arreglo como parámetro a la función, y eso es justamente lo que estás haciendo D:

Código:
onkeydown='onkeyFnc( event,array(13=>'alert(algo1)',107=>'alert(algo2')) );'
En ese trozo estás pasando un arreglo como parámetro D:.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 05/06/2009, 15:31
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 9 meses
Puntos: 4
Respuesta: pasar arreglo como parametro a funcion (onkeydown)

si..... eso es, pero esa linea no me funciona.... y no se cual el el error.

onkeydown="onkeyFncArray( event ,array(13=>'alert(\'algo1\')',107=>'alert(\'algo2\ ')) );"

ese es el probema....
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #4 (permalink)  
Antiguo 05/06/2009, 16:08
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años, 1 mes
Puntos: 89
Respuesta: pasar arreglo como parametro a funcion (onkeydown)

Disculpa la demora. Estaba tratando de hacerlo funcionar xD...

Esto conseguí

Código:
<script>
function onkeyFncArray(e){
    tecla = (document.all) ? e.KeyCode : e.which

    var arr = new Array(
        new Array('13','alert(\'algo1\')') ,
        new Array('107','alert(\'algo2\')'),
        new Array('XXXX','alert(\'algoX\')') 
    );
    for (x in arr)  {
        for(i in x) {
            if(tecla==arr[x][i])
                eval(arr[x][1]);
        }
    }
}</script>

<input type='text' id='uno' value='texto' 
onkeydown="onkeyFncArray( event );">
<input type='text' id='dos' value=''>
Las funciones a evaluar deben ir dentro del arreglo tal como se ve en el ejemplo. Espero te sirva. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 06/06/2009, 09:08
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 9 meses
Puntos: 4
Respuesta: pasar arreglo como parametro a funcion (onkeydown)

esta perfecto.... no obstante ( siempre teiene que haber un pero ), quedamos limitados unica y exclusibamente a las funciones que tena el script, la idea es poder enviar el arreglo como un segundo parametro y el primero dispara el evento, ahora la dea del arreglo es tener una matriz asociativa tal como en php....
no se si se entienda la idea....
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #6 (permalink)  
Antiguo 06/06/2009, 09:22
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años, 1 mes
Puntos: 89
Respuesta: pasar arreglo como parametro a funcion (onkeydown)

Ok xD

Código:
function onkeyFncArray(e, array){
    tecla = (document.all) ? e.KeyCode : e.which
    
    for(x in array)
    {
        if(tecla==x)    {
            eval(array[x]);
        }
    }
}     

<input type='text' id='uno' value='texto' 
onkeydown="onkeyFncArray( event, {13:'alert(\'algo1\')' , 107:'alert(\'algo2\')');">
<input type='text' id='dos' value=''>
Espero te sirva. Nos vemos xD.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 06/06/2009, 10:00
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 9 meses
Puntos: 4
De acuerdo Respuesta: pasar arreglo como parametro a funcion (onkeydown)

compadre eso si funciono....la funcion inicial estaba buena solo que el envio del arreglo no era el correcto

CODIGO MALO
Código:
onkeydown="onkeyFncArray( event ,array(13=>'alert(\'algo1\')',107=>'alert(\'algo2\ ')) );"
CODIGO OK
Código:
onkeydown="onkeyFncArray( event ,{13:'alert(\'Presiono Enter\')',107:'alert(\'Presiono el SIgno +\')'} );"
el error era solo del envio del arreglo como parametro...
ups
ojo " {key:value} " --> forma correcta

gracias por la ayuda......
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:59.