Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2010, 05:46
batten
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación error: se esperaba una funcion

Buenas

Tengo un problemilla con el siguiente código. Al poner una fecha en el campo FUR corregida, hace unos cálculos de fechas y rellena los campos de texto.

La primera ejecución es correcta, falla en al segunda.

Les agradezco su ayuda.

Código Javascript:
Ver original
  1. function eliminarCerosIzq(cadena) {
  2.     for(i=0; i<cadena.length; )
  3.     {
  4.         if(cadena.charAt(i)=="0")
  5.             cadena=cadena.substring(i+1, cadena.length);
  6.         else
  7.             break;
  8.     }
  9.     return cadena;
  10. }
  11.  
  12. function FW(fecha) {    alert('Entra en FW()');
  13.     month = fecha.getMonth();
  14.     date = fecha.getDate();
  15.  
  16.     f1 = new Date(fecha.getFullYear(),0,1,0,0);
  17.     dayf1 = f1.getDay();
  18.     if(dayf1 == 0) dayf1 = 7;
  19.  
  20.     f2 = new Date(fecha.getFullYear(),month,date,0,0);
  21.     dayf2 = f2.getDay();
  22.     if(dayf2 == 0) dayf2 = 7;
  23.  
  24.     if(month == 0 && date == 1 && dayf2 > 4 || month == 0 && date == 2 && dayf2 > 5 || month == 0 && date == 3 && dayf2 == 7)
  25.     {
  26.         f1 = new Date(fecha.getFullYear()-1,0,1,0,0);
  27.         f2 = new Date(fecha.getFullYear()-1,11,31,0,0);
  28.         dayf1 = f1.getDay();
  29.         if(dayf1 == 0) day = 7;
  30.     }
  31.     if(month == 11 && date == 31 && dayf2 < 4 || month == 11 && date == 30 && dayf2 < 3 || month == 11 && date == 29 && dayf2 == 1)
  32.         return(1);
  33.  
  34.     if(dayf1 <5)
  35.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7) + 1);
  36.     else
  37.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7));
  38.     return FW;
  39. }
  40.  
  41. function FW2(fecha) {   alert('Entra en FW2()');
  42.     month = fecha.getMonth();
  43.     date = fecha.getDate();
  44.  
  45.     f1 = new Date(fecha.getFullYear(),0,1,0,0); alert('f1 vale' + f1);
  46.     dayf1 = f1.getDay();
  47.     if(dayf1 == 0) dayf1 = 7;
  48.  
  49.     f2 = new Date(fecha.getFullYear(),month,date,0,0);
  50.     dayf2 = f2.getDay();
  51.     if(dayf2 == 0) dayf2 = 7;
  52.  
  53.     if(month == 0 && date == 1 && dayf2 > 4 || month == 0 && date == 2 && dayf2 > 5 || month == 0 && date == 3 && dayf2 == 7)
  54.     {
  55.         f1 = new Date(fecha.getFullYear()-1,0,1,0,0);
  56.         f2 = new Date(fecha.getFullYear()-1,11,31,0,0);
  57.         dayf1 = f1.getDay();
  58.         if(dayf1 == 0) day = 7;
  59.     }
  60.     if(month == 11 && date == 31 && dayf2 < 4 || month == 11 && date == 30 && dayf2 < 3 || month == 11 && date == 29 && dayf2 == 1)
  61.     return(1);
  62.  
  63.     if(dayf1 <5)
  64.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7) + 1);
  65.     else
  66.         FW = parseInt(((Math.round(((f2-f1)/1000/60/60/24))+(dayf1-1))/7));
  67.     return FW;
  68. }
  69.  
  70. function calculaFechas() { 
  71.     alert('Entra en calculaFechas');
  72.     //var valor = document.getElementById('E_HIST_FUR').value;
  73.     //document.getElementById('E_HIST_FUR_CORRE').value=valor;
  74.     var valor = document.getElementById('E_HIST_FUR_CORRE').value;
  75.     fragmentoFecha = valor.split('/');
  76.  
  77.     var d = eliminarCerosIzq(fragmentoFecha[0]);
  78.     var m = fragmentoFecha[1];
  79.     var numMes = parseInt(m);
  80.     numMes -= 1;
  81.     var a = fragmentoFecha[2];
  82.  
  83.     fecha = new Date(a, numMes, d); //año, mes,dia
  84.     fecha2 = new Date();   
  85.     //FW() y FW2() sin iguales, per si llamo 2 veces a la misma, peta
  86.     var i = FW(fecha);      // <-- FALLA AQUI, la segunda vez que pasa
  87.     var j = FW2(fecha2);
  88.     var dif_dias = fecha2.getDay() - fecha.getDay();
  89.     if(dif_dias < 0) dif_dias += 7;
  90.    
  91.     var dif_semanas = parseInt(i) - parseInt(j)
  92.    
  93.     if (dif_semanas < 0) {  
  94.         dif_semanas += 52;
  95.     }  
  96.     var dd = fecha2.getDate() - fecha.getDate();
  97.     var restaMes = fecha2.getMonth() - fecha.getMonth();
  98.    
  99.     if (restaMes==0 && dd>0 && dd < 7){
  100.         dif_semanas = 0;
  101.     }
  102.     alert('Asigna valor al campo EG');
  103.     document.getElementById('E_HIST_EG').value = dif_semanas + " semana/s y " + dif_dias + " día/s";
  104.    
  105.     var mili=fecha.getTime();
  106.     fecha.setTime(parseInt(mili+24192000000)); //280 dias en milisegundos
  107.  
  108.     //corregir formato fecha
  109.     var fd = fecha.getDate();
  110.     var fd_cad = '' + fd;
  111.     if(fd_cad.length == 1) fd_cad = "0" + fd_cad;
  112.     var fm = fecha.getMonth();
  113.     var fm_cad = '' + fm;
  114.     if(fm_cad.length == 1) fm_cad = "0" + fm_cad;
  115.     alert('Asigna valor al campo FPP');
  116.     document.getElementById('E_HIST_FPP').value = fd_cad + "/" + fm_cad + "/" + fecha.getYear();    
  117. }
  118.  
  119. function esFecha(p_fecha) {
  120.     return true;
  121. }

Código HTML:
Ver original
  1. <div class="formulario">
  2. <table border=0 cellpadding=2 cellspacing=0 align=center>
  3.     <form name='F1' method=post>
  4.         <tr>
  5.          
  6.           <td colspan="2">&nbsp;&nbsp;&nbsp;- EG:&nbsp;&nbsp;
  7.                 <input name='E_HIST_EG' value='' readonly="readonly" size='40' maxlength=80 title='' tabindex=50>
  8.           </td>              
  9.           <td colspan="2">&nbsp;&nbsp;&nbsp;- FPP:&nbsp;&nbsp;
  10.                 <INPUT NAME='E_HIST_FPP' VALUE='' readonly="readonly" SIZE='40' maxlength=80 TITLE='' tabindex=60 onfocus='select()' onchange='if(esFecha("E_HIST_FPP")){return true;} else return false;'>&nbsp;
  11.           </td>
  12.         </tr>
  13.         <tr>
  14.           <td colspan="5">&nbsp;&nbsp;&nbsp;- FUR corregida:&nbsp;&nbsp;
  15.                 <INPUT NAME='E_HIST_FUR_CORRE' onPropertyChange='calculaFechas()' VALUE='' SIZE='10' maxlength=80 TITLE='' tabindex=70 onfocus='select()' onchange='if(esFecha("E_HIST_FUR_CORRE")){return true;} else return false;'>&nbsp;
  16.           </td>
  17.         </tr>
  18.     </form>
  19. </div>
  20. </body>