Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Graphixx en 24 Abril 2012, 19:36 pm



Título: [javascript] llamar a funcion que se recibe por parametro de la funcion
Publicado por: Graphixx en 24 Abril 2012, 19:36 pm
Primero que todo aclarar que lo que estoy tratando de hacer no es recursividad.
quiero que al pulsar enter en un textbox pueda llamar a determinada funcion:

llevo en el index.php:

Código
  1. <input name="texto" type="text" id="texto" size="40" onkeypress="keydown(event,'funcion')">
  2.  

en el archivo funciones_javascript.js:
Código
  1. //CAPTURAR ENTER Y REDIRIGIRLO HACIA OTRA ACCION
  2. function keydown(e,s){
  3.    if (!e) var e = window.event;
  4.    if (e.keyCode) code = e.keyCode;
  5.    else if (e.which) code = e.which;
  6.    if (code==13){
  7.    //alert ("presiono enter");
  8.    //document.getElementById(s).focus();
  9. esta_es_otra_funcion('buscar','1')
  10.    }
  11.    }
  12.  

la funcion javascript recibe por la variable 'funcion' el nombre de la otra funcion que deberia ejecutar al presionar enter, como invoco o llamo a esa funcion que recibi desde la funcion actual????

que no tenga que hacer:
Código
  1. if (funcion=='buscar')
  2.    buscar();
  3. elseif (funcion=='ejecutar')
  4.   ejecute();
  5. etc...

Probe a llamarla usando:
Código
  1. function keydown(e,s){
  2.    if (!e) var e = window.event;
  3.    if (e.keyCode) code = e.keyCode;
  4.    else if (e.which) code = e.which;
  5.    if (code==13){
  6. //alert ("presiono enter");
  7.    //document.getElementById(s).focus();
  8. //medicamentos('buscar','1')
  9. var f = new Function(s+";");
  10.    f();
  11.    }
  12.    }
  13.  

pero no funciono.

El primer obstaculo a sortear es como enviar la funcion desde el evento del campo sin deformar la estructura de la peticion de la primera funcion asi:
Código
  1. <input name="texto" type="text" id="texto" size="40" onkeypress="keydown(event,'buscardatos('buscar','1')')"></td>
  2.  
Como deberia enviar la segunda funcion dentro de la primera ????

lo solucione enviando los parametros de la segunda funcion cifrados por asi decirlo asi:
Código
  1. <input name="texto" type="text" id="texto" size="40" onkeypress="keydown(event,'estaesotrafuncionˇ%buscar%,%1%!')">
donde reemplazamos:
( por ˇ
) por !
y las '' por %%

Y despues en el evento que me detecta el enter:
Código
  1. //CAPTURAR ENTER Y REDIRIGIRLO HACIA OTRA FUNCION
  2. function keydown(e,s){
  3.    if (!e) var e = window.event;
  4.    if (e.keyCode) code = e.keyCode;
  5.    else if (e.which) code = e.which;
  6.    if (code==13){
  7.  
  8. //Cadena original
  9.    var texto = s;
  10.    //Reemplazamos todas las cadenas
  11.    texto = texto.replace(/ˇ/g, '(');
  12. texto = texto.replace(/!/g, ')');
  13. texto = texto.replace(/%/g, "'");
  14.  
  15. //llamamos a la funcion recibida
  16. var f = new Function(texto+";");
  17.    f();
  18.      }
  19.    }
  20.  

Y asi logramos usar una funcion para llamar a otras funciones!!!!
 ;-) ;-) ;-) ;-)