Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Llamar a 2 funciones desde el mismo link

Estas en el tema de Llamar a 2 funciones desde el mismo link en el foro de Frameworks JS en Foros del Web. Hola buenas, ante todo decir que he buscado en los foros y he visto cosas parecidas, pero no lo he visto solucionado del todo.... Tengo ...
  #1 (permalink)  
Antiguo 01/09/2010, 09:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 0
Llamar a 2 funciones desde el mismo link

Hola buenas, ante todo decir que he buscado en los foros y he visto cosas parecidas, pero no lo he visto solucionado del todo....

Tengo dos funciones que se ejecutan ante el mismo evento:

Código Javascript:
Ver original
  1. onchange="showProyecto(this.value);showUser(this.value)"

El caso es que no se ejecuta bien, o ejecuta solamente una, o ejecuta la misma funcion en los dos divs.... He cambiado nombre de variables, he hecho todo lo que se me ocurrio y aun asi no he conseguido que me funcione bien.... Pido ayuda desesperadamente :) os dejo el codigo... un saludo! y gracias!

Código Javascript:
Ver original
  1. function showUser(str)
  2.             {
  3.             if (str=="")
  4.               {
  5.               document.getElementById("txtHint").innerHTML="";
  6.               return;
  7.               }
  8.             if (window.XMLHttpRequest)
  9.               {// code for IE7+, Firefox, Chrome, Opera, Safari
  10.               xmlhttp=new XMLHttpRequest();
  11.               }
  12.             else
  13.               {// code for IE6, IE5
  14.               xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  15.               }
  16.             xmlhttp.onreadystatechange=function()
  17.               {
  18.               if (xmlhttp.readyState==4 && xmlhttp.status==200)
  19.                 {
  20.                 document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  21.                 }
  22.               }
  23.             xmlhttp.open("GET","proyasignados.php?q="+str,true);
  24.             xmlhttp.send();
  25.             }
  26.  
  27.             function showProyecto(str)
  28.             {
  29.                 if (str=="")
  30.               {
  31.               document.getElementById("proyHint").innerHTML="";
  32.               return;
  33.               }
  34.             if (window.XMLHttpRequest)
  35.               {// code for IE7+, Firefox, Chrome, Opera, Safari
  36.               xmlhttp=new XMLHttpRequest();
  37.               }
  38.             else
  39.               {// code for IE6, IE5
  40.               xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  41.               }
  42.             xmlhttp.onreadystatechange=function()
  43.               {
  44.               if (xmlhttp.readyState==4 && xmlhttp.status==200)
  45.                 {
  46.                 document.getElementById("proyHint").innerHTML=xmlhttp.responseText;
  47.                 }
  48.               }
  49.             xmlhttp.open("GET","formularioProyectosAsignados.php?q="+str,true);
  50.             xmlhttp.send();
  51.             }
  #2 (permalink)  
Antiguo 01/09/2010, 12:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Llamar a 2 funciones desde el mismo link

Lo estas haciendo con una lista desplegable <select>?

Si es asi, necesitas hacer referencia al valor del elemento seleccionado:

onchange="funcion(this.options[this.selectedIndex].value);"
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 01/09/2010, 12:21
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Llamar a 2 funciones desde el mismo link

Mejor te recomiendo que llames a una funcion y que en esta se ejecuten ambos codigos.... o en todo caso, al acabar el proceso de la primera funcion, que recien llame a la otra....

algo asi:
onchange="showProyecto(this.value);"

function showProyecto(str){
.....
showUser(str);
}
function showUser(str){
.....
}

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 01/09/2010, 15:20
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Llamar a 2 funciones desde el mismo link

Hola
Cita:
Iniciado por Triby Ver Mensaje
Lo estas haciendo con una lista desplegable <select>?

Si es asi, necesitas hacer referencia al valor del elemento seleccionado:

onchange="funcion(this.options[this.selectedIndex].value);"
@Triby, this.value es totalmente correcto. La explicación es que un combox está formado por option que tienen value y text. Es decir con this.value o this.text accesas al valor o al texto de la opción seleccionada.
En cuanto a lo que le ocupa a @edsolla, lo que plantea @maestrorojillo es una opción, otra sería algo así
Cita:
onchange="return funcion1(this.value) && funcion2(this.value)"
Cuando se reciba true de la primera función se ejecutará la segunda. Claro está habría que hacer este pequeño cambio
Cita:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlht tp.responseText;
return true;
}
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 02/09/2010, 11:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: Llamar a 2 funciones desde el mismo link

Creo que es porque estás utilizando variables globales.
Al hacer esto:

Código Javascript:
Ver original
  1. xmlhttp=new XMLHttpRequest();

asignas un valor, y en la siguiente función te lo cargas.

Haz esto:

Código Javascript:
Ver original
  1. var xmlhttp=new XMLHttpRequest();

Para crear una variable local y así no sobreescribes la variable global xmlhttp en la otra función (sin var = variable global).

Aquí:
Código Javascript:
Ver original
  1. xmlhttp.onreadystatechange=function()
  2.               {
  3.               if (xmlhttp.readyState==4 && xmlhttp.status==200)
  4.                 {
  5.                 document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  6.                 }
  7.               }
Probablemente tengas que utilizar:
Código Javascript:
Ver original
  1. xmlhttp.onreadystatechange=function()
  2.               {
  3.               if (this.readyState==4 && this.status==200)
  4.                 {
  5.                 document.getElementById("txtHint").innerHTML=this.responseText;
  6.                 }
  7.               }
Pero no estoy seguro que en esto no soy un experto :P

Etiquetas: ajax, funciones, link, llamar
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 21:53.