/* Test de la validité des champs du formulaire à soumettre */ function computeTaste(theForm, tabField) { // theForm : Formulaire courant // tabField : table contenant les champs à tester "champ1", "Type champ1","champ2","type champ2", "format", "mandatory', "MsgErr" // tester champ1 ou champ 2 for (i=0;i return false // un champ qui n'existe pas dan sle formulaire, indique qu'il n'est obligatoire --> return true // : FldType :type de champs // : format - variable suivant le type du champ // : variable suivante le type // : isMandatory : champ est obligatoire (1) // renvoi : Result -> true=ok, false=Erreur if (FldName=='') return false; if (theForm[FldName]) { if(FldType =='input') { if (isMandatory) if (theForm[FldName].value=='') return false; } if(FldType=='select') { if (isMandatory) { indice = theForm[FldName].selectedIndex; testVal = ''; if (indice > -1) testVal = theForm[FldName].options[indice].text; if (indice==-1 || testVal=='') return false; } } /* 2005-07-28 AMT */ if(FldType=='option') { if (isMandatory) { indice = theForm[FldName].options.length; if (indice==0) return false; } } if ((FldType=='Date') || (FldType=='Time') || (FldType=='DateTime')) { // calcul du format des dates. var format (int) = (isDMTfmt * 10) + isHMfmt // si format = 11 --> la date vaut mm/dd/yyyy et l'heure hh:mm:ss // si format = 1 --> la date vaut dd/mm/yyyy et l'heure hh:mm:ss // si format= 10 -->dtae=mm/dd/yyyy, heure=hh:mm // etc... if (theForm[FldName].value=='') { if (isMandatory) return false; else return true; } isMDYfmt = (format>=10) ? true : false; if (format==0) isHMSfmt=false; else isHMSfmt = ((format%10)>0) ? true: false; // alert('format =' + format + ' doc isMDYfmt=' + isMDYfmt) if (!isValidDateType(theForm[FldName].value,FldType,isMDYfmt, isHMSfmt)) return false; } } return true; } // fonction isValidDate // // parametres : chaine : date ou heure / date et heure // : type : Date ou Time ou DateTime // : strDtFmt : format de date suivant DB Def // : strTmFmt : format d\'heure suivant DB Def // retour : true si date valide // false sinon var Mois = new Array(31,28,31,30,31,30,31,31,30,31,30,31); // Année bissextile ? function leapYear(year) { if (year%4 > 0) return false; if (year< 1582) return true; if (year%100 > 0) return true; if (year%400 == 0) return true; return false; } // Retourne le nombre du jour du mois de la date courante function getMaxDays(myDate) { month = myDate.getMonth(); year = myDate.getYear(); if (month==1 && leapYear(year)) return Mois[month]+1; else return Mois[month]; } // Test de la validité de la date, en fonction du format demandé [mm/dd/yyyy ou dd/mm/yyyy) function isValidDateType(strDate,strType, isMDYfmt, isHMSfmt) { // fonction principale validation Date / heure // strDtFmt : si =1 -> mm/dd/yyyy sinon dd/mm/yyyy // strTtFmt : si 1 -> hh:mm:ss sinon hh:mm if(strType=='Date') if (! isValidDate(strDate, isMDYfmt)) return false; if(strType=='Time') if (! isValidTime(strDate, isHMSfmt)) return false; if(strType=='DateTime') { strDateTime = strDate.split(' '); if (!strDateTime|| !strDateTime[0] || !strDateTime[1]) return false; if (! isValidDate(strDateTime[0],isMDYfmt)) return false; if (! isValidTime(strDateTime[1], isHMSfmt)) return false; } return true; } function isValidDate(strDate,isMDYfmt) { // alert('date=' + strDate); if (strDate=='') return false; myDate = strDate.split('/'); if (myDate.length!=3) return false; if (!myDate || !myDate[0] || !myDate[1] || !myDate[2]) return false; if((isNaN(myDate[0])) || (isNaN(myDate[1]))|| (isNaN(myDate[2]))) return false; a = parseInt(myDate[2],10); if(isMDYfmt) { m = parseInt(myDate[0],10)-1; d = parseInt(myDate[1],10); } else { d= parseInt(myDate[0],10); m = parseInt(myDate[1],10)-1; } if ((a>50) & (a<99)) a = a+1900; if((a>0) &(a<50)) a = a + 2000; if (a>9999) return false; if ((m<0) || (m>11)) return false; date1 = new Date(a,m,1); if ((d<0) || (d>getMaxDays(date1))) return false; return true; } function isValidTime(strTime, isHMSfmt) { // alert('time=' + strTime); if (strTime=='') return false; myTime = strTime.split(':'); if(isHMSfmt) { if (myTime.length!=3) return false; if (!myTime|| !myTime[0] || !myTime[1] || !myTime[2] || myTime[3]) return false; if((isNaN(myTime[0])) || (isNaN(myTime[1]))|| (isNaN(myTime[2]))) return false; if((myTime[0].length > 2) || (myTime[1].length > 2) || (myTime[2].length > 2)) return false; s = parseInt(myTime[2],10); } else { if (myTime.length!=2) return false; if (!myTime|| !myTime[0] || !myTime[1] || myTime[2]) return false; if((isNaN(myTime[0])) || (isNaN(myTime[1]))) return false; if((myTime[0].length > 2) || (myTime[1].length > 2)) return false; s=0; } h = parseInt(myTime[0],10); m =parseInt(myTime[1],10); if((h>23) || (m>59) || (s>59)) return false; return true; }