Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
906 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°678611
bazbaz
Posté le 20-03-2004 à 11:05:29  profilanswer
 

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);
 }
 
}

mood
Publicité
Posté le 20-03-2004 à 11:05:29  profilanswer
 

n°678621
ratibus
Posté le 20-03-2004 à 11:15:26  profilanswer
 

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
n°678628
bazbaz
Posté le 20-03-2004 à 11:34:06  profilanswer
 

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

n°678686
ratibus
Posté le 20-03-2004 à 13:05:47  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

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

 

Sujets relatifs
aidez moi a comprendre cette fonctionExtensions Frontpage chez Multimania.fr (lycos)... marche pas??
htmlconverter comment ca marche?une tableau qui s'actualise tout seul en fonction de choix,
fonction char -> boolComment ca marche le mysql_connect ?
Fonction Case en batchMon compteur de compteur.com marche plus
[Perl] Fonction find, en plus d'utilisation de simili-objet[Access97] "entre 1 et 1" marche mais "=1" ne marche pas; paglops
Plus de sujets relatifs à : [JS]Fonction qui marche une fois, pas deux.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR