Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/10/2010, 16:30
Iranio
 
Fecha de Ingreso: enero-2002
Mensajes: 27
Antigüedad: 22 años, 10 meses
Puntos: 0
Respuesta: JQuery: varias funciones consecutivas

Hola,

Creo que te has explicado muy bien.
El problema posiblemente es que aún no lo he entendido correctamente, porque no consigo que me funcione.

Mi script está en un formulario y hace lo siguiente:
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.  
  3.     function cambio_proveedor(callback){
  4.         var id_proveedor = $('.id_proveedor option:selected').val();
  5.         // Llamamos a carga_dtos_proveedor.php
  6.         $.get('carga_dtos_proveedor.php', {id_proveedor: id_proveedor}, function(datos){
  7.             // Pinta dtos de proveedor
  8.             $('.dto_proveedor_1').val(datos.dto_1);
  9.             $('.dto_proveedor_2').val(datos.dto_2);
  10.             $('.dto_proveedor_3').val(datos.dto_3);
  11.         },'json');
  12.         callback();
  13.     }
  14.  
  15.     function coste_final(){
  16.         var tarifa_compra = $('.tarifa_compra').val();
  17.         var dto_proveedor_1 = $('.dto_proveedor_1').val();
  18.         var dto_proveedor_2 = $('.dto_proveedor_2').val();
  19.         var dto_proveedor_3 = $('.dto_proveedor_3').val();
  20.         var dto_1 = $('.dto_1').val();
  21.         var dto_2 = $('.dto_2').val();
  22.         var dto_3 = $('.dto_3').val();
  23.         var dto_ajuste = $('.dto_ajuste').val();
  24.         var punto_verde = $('.punto_verde').val();
  25.         // Obtenemos coste_final y lo pintamos
  26.         $.get('carga_coste_final.php', {tarifa_compra: tarifa_compra, dto_proveedor_1: dto_proveedor_1, dto_proveedor_2: dto_proveedor_2, dto_proveedor_3: dto_proveedor_3, dto_1: dto_1, dto_2: dto_2, dto_3: dto_3, dto_ajuste: dto_ajuste, punto_verde: punto_verde}, function(coste_final){
  27.             $('.coste_final').val(coste_final);
  28.         });
  29.     }
  30.  
  31.     // Cálculo a la carga de la página
  32.     $(window).bind('load', function(){
  33.         cambio_proveedor(coste_final);
  34.     });
  35.  
  36. });
Tengo un select donde se escoge un proveedor.
Un script en PHP (carga_dtos_proveedor.php) recupera los valores de descuentos de ese proveedor (dto_proveedor_1, dto_proveedor_2, ...)

En el apartado "Cálculo a la carga de la página" hago que se ejecuten sucesivamente las funciones cambio_proveedor() y coste_final()

La primera se ejecuta correctamente y en el formulario se ven los datos de descuentos recuperados.

Pero la segunda función, coste_final(), no consigue recuperar los datos de los campos input de los descuentos.

Por las múltiples pruebas realizadas parece que es un problema de tiempo entre la primera y segunda función.

Y no acabo de entenderlo porque creo que he puesto bien las llamadas al callback.

Si podéis echarme una mano, se agradece.

Saludos