Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/04/2014, 16:18
Avatar de JuJoGuAl
JuJoGuAl
 
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 9 meses
Puntos: 19
Ejecutar un Script sin ningun Evento

Buenas amigos, en mis desarrollos con jquery siempre ato los sucesos (Scripts) a eventos como BLUR, ONFOCUS, FOCUS, KEYUP, etc... de tal manera si un input es tocado o modificado llame una funcion.

Ahora me encuentro con el problema que estoy haciendo uso de AJAX para consultar un dato en una base de datos Interbase:

Código Javascript:
Ver original
  1. $( "#fecha1" ).bind( "blur", function() {
  2.         //alert( "blur" );
  3.             if ($(this).val()!=null){
  4.                     var fecha = $('#fecha1').val().split("/");
  5.                     $.ajax({
  6.                         url: 'ventas.php',
  7.                         data: "dia="+fecha[0]+"&mes="+fecha[1]+"&ano="+fecha[2],
  8.                         dataType: 'json',
  9.                         success: function(data)
  10.                         {
  11.                             var Facturas = data[0];
  12.                             var Devoluciones = data[1];
  13.                             var Facturado = data[2];
  14.                             $('#tvale').val(Facturado);
  15.                             }
  16.                         });
  17.                     }
  18.                 else{
  19.                     alert('El campo Fecha debe tener una Fecha Válida');
  20.                     }
  21.         });

Eso deberia de colocarme en un campo las ventas del dia (segun el dia seleccionado), Bueno resulta que hay ocasiones donde ese Evento quizas se ejecute pero por mala practica del uso del servidor de la bd interbase o el trafico de red, la repuesta nunca llega... o tarda mucho en mostrarme el valor...

entonces hay una forma donde yo pueda llamar esa funcion si tener que especificar el evento? es decir
if fecha1 != null {ejecuta ajax} else {no hacer nada} ?

porque tambien hago esto:

Código Javascript:
Ver original
  1. $('#corte_caja').delegate('input[type=text]', 'blur', function () {
  2.                 var montosx = $('.sumar_montox').sumVal();
  3.                 $('#tcajax').val(montosx);
  4.                 var montosz = $('.sumar_montoz').sumVal();
  5.                 $('#tcajaz').val(montosz);
  6.                
  7.                 $('#tcaja').val(parseFloat(montosz)+parseFloat(montosx));
  8.                 $('#montoZ').val(parseFloat($('#montorvz').val())+parseFloat($('#montoriz').val()));               
  9.                
  10.                 var dmf = 0, dc = 0;
  11.                 dmf = ((parseFloat($('#montorvz').val() || 0)+parseFloat($('#montoriz').val() || 0)) - (parseFloat($('#mdevz').val() || 0)+parseFloat($('#mdeviz').val() || 0)) - parseFloat($('#tvale').val() || 0));
  12.                 dc =  (parseFloat($('#tcaja').val()) -  parseFloat($('#tvale').val()));
  13.                 $('#dmq').val(dmf.toFixed(2));
  14.                 $('#dc').val(dc.toFixed(2));
  15.                 if (Math.abs(dmf)>5){
  16.                     $('#alertdmq').val('1');}
  17.                     else{
  18.                         $('#alertdmq').val('0');
  19.                     }
  20.                 if (Math.abs(dc)>5){
  21.                     $('#alertdc').val('1');}
  22.                     else{
  23.                         $('#alertdc').val('0');
  24.                     }
  25.                 });

para hacer unos calculos de Diferencias entre lo vendido y lo cobrado etc... pero resulta que no siempre estos se ejecutan, es decir los campos donde quedan los resultados quedan VACIOS NaN o no se actualizan (porque nose) entonces eso obliga a que los usuarios se paseen por los input para que los rsultados se actualizen.

Mi pregunta seria, existe una forma de que SIEMPRE se ejecuten dichos scripts sin atarlo a un evento?

es una mala practica? o existe un mejor modo?