Foros del Web » Programando para Internet » Javascript »

2 funciones en un mismo evento. Se puede?

Estas en el tema de 2 funciones en un mismo evento. Se puede? en el foro de Javascript en Foros del Web. Hola, tengo la siguiente evento, el problema es que solo funciona la primera detalle_pro onChange="detalle_pro(this.value);calculo(this.val ue);" Agradeceria cualquier sugerencia, gracias...
  #1 (permalink)  
Antiguo 25/06/2009, 10:28
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
2 funciones en un mismo evento. Se puede?

Hola, tengo la siguiente evento, el problema es que solo funciona la primera detalle_pro


onChange="detalle_pro(this.value);calculo(this.val ue);"



Agradeceria cualquier sugerencia, gracias
  #2 (permalink)  
Antiguo 25/06/2009, 10:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: 2 funciones en un mismo evento. Se puede?

¿Cómo están definidas ambas funciones?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 25/06/2009, 14:42
 
Fecha de Ingreso: junio-2009
Mensajes: 32
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: 2 funciones en un mismo evento. Se puede?

, y si intentas llamar a una función q contenga el llamado a esas 2 funciones?
  #4 (permalink)  
Antiguo 25/06/2009, 16:05
 
Fecha de Ingreso: noviembre-2004
Ubicación: Buenos Aires
Mensajes: 34
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: 2 funciones en un mismo evento. Se puede?

si utilizas prototype.js es muy fácil de conseguir:

suponiendo que tenes un formulario y en uno de sus textbox querés ejecutar 5 funciones diferentes cada vez que cambie su contenido podés hacer algo como lo siguiente:

$('btnAceptar').observe('change', funcion1);
$('btnAceptar').observe('change', funcion2);
$('btnAceptar').observe('change', funcion3);
$('btnAceptar').observe('change', funcion4);
$('btnAceptar').observe('change', funcion5);
  #5 (permalink)  
Antiguo 25/06/2009, 16:23
 
Fecha de Ingreso: marzo-2009
Ubicación: yokze
Mensajes: 177
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: 2 funciones en un mismo evento. Se puede?

Cita:
Iniciado por diegoturriaga Ver Mensaje
si utilizas prototype.js es muy fácil de conseguir:

suponiendo que tenes un formulario y en uno de sus textbox querés ejecutar 5 funciones diferentes cada vez que cambie su contenido podés hacer algo como lo siguiente:

$('btnAceptar').observe('change', funcion1);
$('btnAceptar').observe('change', funcion2);
$('btnAceptar').observe('change', funcion3);
$('btnAceptar').observe('change', funcion4);
$('btnAceptar').observe('change', funcion5);
gracias por tu aporte, pero bolo...para eso está la seccion de frameworks xDD
(si te resultas ofendido x poner bolo, dimelo, no lo hago con esa intencion, solo q me hace gracia por un tema entre amigos xDD)
salu2
  #6 (permalink)  
Antiguo 25/06/2009, 16:53
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 18
Respuesta: 2 funciones en un mismo evento. Se puede?

Si solo ejecuta la primera es por que la segunda tiene un error. O al momento de llamarla o la función en si.
  #7 (permalink)  
Antiguo 25/06/2009, 17:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: 2 funciones en un mismo evento. Se puede?

Lo raro es que ambas funcionan sin problemas independientemente, he intentado llamando a una sola funcion y desde hay que llame a las 2. Y nada tampoco, es muy extraño
  #8 (permalink)  
Antiguo 25/06/2009, 23:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: 2 funciones en un mismo evento. Se puede?

Muéstranos ambas funciones; de lo contrario será difícil que podamos ver el error.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 26/06/2009, 07:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: 2 funciones en un mismo evento. Se puede?

Cita:
Iniciado por David Ver Mensaje
Muéstranos ambas funciones; de lo contrario será difícil que podamos ver el error.
function detalle_pro(art){
if (!art) { return(false); }
var aleatorio=Math.random();
divResultado = document.getElementById('precio') ;
ajax=objetoAjax();
ajax.open("GET", "gestion/_ajax/mysql.php?opcion=precios&aleatorio="+aleatorio+"&a rticulo="+art);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
divResultado.value = ajax.responseText ;
document.getElementById('total_0').value = ajax.responseText ;
}
}
ajax.send(null)
}


function calculo()
{
var Error3 = "Error";
var campo = document.getElementById('cantidad') ;
if( campo.value.length < 0 ) {
alert(Error3);
campo.nombre.focus();
return false;
}
total = campo.value * document.getElementById('precio').value ;
descu = total * (document.getElementById('descuento_0').value / 100) ;
subt = total - descu ;
impuestos = (document.getElementById('imp_01').value * 1 + document.getElementById('imp_02').value * 1) / 100 ;
document.getElementById('total_0').value = parseInt( subt * ( 1 + impuestos ));
}
  #10 (permalink)  
Antiguo 26/06/2009, 07:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: 2 funciones en un mismo evento. Se puede?

Debes tener en cuenta que la petición que estás haciendo en la primera función es asíncrona. Por lo que el cálculo que se hace en la segunda función probablemente se procesará antes de que recibas la respuesta del servidor. Puedes hacer una petición síncrona asignando el tercer parámetro del método open en false:
Código Javascript:
Ver original
  1. ajax.open("...", "...", false);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 26/06/2009, 10:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: 2 funciones en un mismo evento. Se puede?

Cita:
Iniciado por David Ver Mensaje
Debes tener en cuenta que la petición que estás haciendo en la primera función es asíncrona. Por lo que el cálculo que se hace en la segunda función probablemente se procesará antes de que recibas la respuesta del servidor. Puedes hacer una petición síncrona asignando el tercer parámetro del método open en false:
Código Javascript:
Ver original
  1. ajax.open("...", "...", false);

Tenias razon - era la asincronia, la cual hacia que pasara en banda e ignorara la funcioncion que le seguia.

Gracias
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 15:07.