[JS]Fonction qui marche une fois, pas deux.

Fonction qui marche une fois, pas deux. [JS] - HTML/CSS - Programmation

Marsh Posté le 20-03-2004 à 11:05:29    

Alors voila, j'ai fais une fonction me servant a verifier une date saisie. Lorsque je clique une fois pour valider la saisie, la fonction bloque l'envoi et affiche une alerte si la date n'est pas valide. MAIS, si je reclique une deuxieme fois apres l'alerte sur le bouton servant a valider la date, ben l'ajout est effectué, meme avec une date fausse. Voila, je vous met les 2 fonctions en cause, mais il semblerait que cela vienne plus de la 1ere, car la 2eme renvoie toujours le bon résultat.
 
 
 
function Controle_Pers()
{
if(
document.modifier_pers.nom.value=='' ||  
document.modifier_pers.prenom.value=='' ||  
document.modifier_pers.naissance.value=='' ||  
document.modifier_pers.nat.value=='' ||  
document.modifier_pers.biographie.value==''){
 
alert('Un ou plusieurs champs obligatoires n\'ont pas été remplis');
document.modifier_pers.nom.focus();
 
}else{
  if(Verif_Date(document.modifier_pers.naissance.value) == true){
  }if (document.modifier_pers.mort.value == ''){
  alert ('submit 1');
  alert (Verif_Date(document.modifier_pers.naissance.value));
  document.modifier_pers.submit();
  }else if (Verif_Date(document.modifier_pers.mort.value) == true){
    alert ('submit 2');
         document.modifier_pers.submit();
  }
}
}
 
 
 
function Verif_Date(Date_verif){
 
    pos_prem_slash = Date_verif.indexOf("/" );
    pos_der_slash  = Date_verif.lastIndexOf("/" );
 
    var j = Date_verif.substring(0,pos_prem_slash);
    var m = Date_verif.substring( (pos_prem_slash +1), pos_der_slash);
    var a = Date_verif.substring( (pos_der_slash +1 ) , Date_verif.length);
     
    var now = new Date();
    var jour = now.getDate();
    var mois = now.getMonth()+1;
    var annee = now.getYear();
 
    if (((isNaN(j))||(j<1)||(j>31))){
    alert ("Le jour saisi n'est pas valide." );
    return(false);
    }else if( ((isNaN(m))||(m<1)||(m>12))){
    alert ("Le mois saisi n'est pas valide." );
    return(false);
    }else if(isNaN(a) || (a>annee) || (a.length != 4)){
    alert ("La date doit être antérieure a la date d'aujourd'hui, vérifiez l\'annee." );
    return(false);
 }else if( (a==annee) && (m>mois)){
     alert ("La date doit être antérieure a la date d'aujourd'hui, vérifiez le mois." );
     return(false);
     }else if( (a==annee) && (m==mois) && (j>jour) ){
     alert ("La date doit être antérieure a la date d'aujourd'hui, vérifiez le jour." );
     return(false);
     }else{
     return(true);
 }
 
}

Reply

Marsh Posté le 20-03-2004 à 11:05:29   

Reply

Marsh Posté le 20-03-2004 à 11:15:26    

function Controle_Pers()  
{  
if(  
document.modifier_pers.nom.value=='' ||  
document.modifier_pers.prenom.value=='' ||  
document.modifier_pers.naissance.value=='' ||  
document.modifier_pers.nat.value=='' ||  
document.modifier_pers.biographie.value==''){  
 
alert('Un ou plusieurs champs obligatoires n\'ont pas été remplis');  
document.modifier_pers.nom.focus();  
 
}else{  
  if(Verif_Date(document.modifier_pers.naissance.value) == true){  
  }if (document.modifier_pers.mort.value == ''){  
  alert ('submit 1');  
  alert (Verif_Date(document.modifier_pers.naissance.value));  
  document.modifier_pers.submit();  
  }else if (Verif_Date(document.modifier_pers.mort.value) == true){  
    alert ('submit 2');  
         document.modifier_pers.submit();  
  }  
}  
}  
 
T'as une accolade en trop (je l'ai mise en gras)
 
Sinon pour optimiser un peu les if/else je ferais ça :
 

Code :
  1. function Controle_Pers()
  2. {
  3. if(
  4. document.modifier_pers.nom.value=='' || 
  5. document.modifier_pers.prenom.value=='' || 
  6. document.modifier_pers.naissance.value=='' || 
  7. document.modifier_pers.nat.value=='' || 
  8. document.modifier_pers.biographie.value==''){
  9. alert('Un ou plusieurs champs obligatoires n\'ont pas été remplis');
  10. document.modifier_pers.nom.focus();
  11. }elseif(Verif_Date(document.modifier_pers.naissance.value)
  12.      && ( document.modifier_pers.mort.value == '' || Verif_Date(document.modifier_pers.mort.value)) ){
  13.   document.modifier_pers.submit();
  14.   }
  15. }


 
PS : je pense d'après ton code que tu dois gérer l'événement onclick et pas onsubmit du formulaire
 
il faudrait faire comme ça  
 
<form onsubmit="return Controle_Pers(this)">
 et un input type= "sumbit" et pas un input type="button"
avec cette fonction Controle_Pers() :
 
 

Code :
  1. function Controle_Pers(frm)
  2. {
  3. if(
  4. frm.nom.value=='' || 
  5. frm.prenom.value=='' || 
  6. frm.naissance.value=='' || 
  7. frm.nat.value=='' || 
  8. frm.biographie.value==''){
  9. alert('Un ou plusieurs champs obligatoires n\'ont pas été remplis');
  10. document.modifier_pers.nom.focus();
  11. return false;
  12. }
  13. if(Verif_Date(document.modifier_pers.naissance.value)
  14.      && ( document.modifier_pers.mort.value == '' || Verif_Date(document.modifier_pers.mort.value)) ){
  15.   return true;  }
  16. return false;
  17. }


Message édité par ratibus le 20-03-2004 à 11:20:30
Reply

Marsh Posté le 20-03-2004 à 11:34:06    

Merci :)
 
En effet, j'utilise le onclick, quel est l'interet de passer en onsubmit ? Maintenant tout roule :)

Reply

Marsh Posté le 20-03-2004 à 13:05:47    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed