Problème Javascript

Profil bloqué -  
 Profil bloqué -
Bonjour,

j'ai repris un bout de code qui permet de tester si on rentre une date correctement
function twValide_date(nDate) {
  ok = "oui";
  var nChar;
  var aDate;
  var nJ;
  var nM;
  var nA;
  var jMax = 31;
  var nA1 = 1900;
  var nA2 = 2100;
  
  nAccepte = "0123456789/";
  if (nDate.value.length > 0) {
    if (nDate.value.length < 8 || nDate.value.length > 10) ok = "non";
    for (var i=0; i<nDate.value.length; i++) {
      nChar = "" + nDate.value.substring(i, i+1);
      if (nAccepte.indexOf(nChar) == "-1") ok = "non";
    }
    if (ok == "oui") 
	{
      aDate = nDate.value.split("/");
      nJ = aDate[0]; nM = aDate[1]; nA = aDate[2];
	  if ((nJ < 1 || nJ > jMax) || (nM < 1 || nM > 12) || (nA < nA1 || nA > nA2))
	  	{
		ok = "non";
		}
      else 
	  	{
        if (nM == 2) 
		{ 
          if (nA == 2000 || nA == 2004 || nA == 2008 || nA == 2012 || nA == 2016 || nA == 2020)
		   { jMax = 29 }
		    else 
			{ jMax = 28 }
        }
        if ((nM == 1 || nM == 3 || nM == 5 || nM == 7 || nM == 8 || nM == 10 || nM == 12)) jMax = 31
        if ((nM == 4 || nM == 6 || nM == 9 || nM == 11)) jMax = 30
     
        if (nJ < 1 || nJ > jMax) ok = "non";
      }
    }
  if (ok == "non") {
      nDate.focus();
      nDate.select();
	  alert ("\nDate invalide!. Veuillez entrer une date valide: jj/mm/aaaa")
    }
  }
}


Si jamais on rentre du texte, alors j'ai une popup toute blanche qui s'ouvre avec rien dedans...je clique sur fermer et la j'obtiens le message: Date invalide!. Veuillez entrer une date valide: jj/mm/aaaa

Pourquoi est-ce que j'ai une popup vide avant ?

Merci

2 réponses

Zestyr Messages postés 503 Statut Membre 52
 
Salut, je suis présser donc je ne saurais pas te répondre mais pour vérifier des chaine de caractères en javascript on use des regex : c'est plus simple
function dateValide(sDate)
{
    return /^ \d{1,2}\/{1}\d{1,2}\/\d{2,4} $/.test(sDate);
}


tu peux apprendre les regexs ici


Aussi en js ça existe les booleen alors au lieu de mettre ok = "non" , marque ok = false !

++
0
Profil bloqué
 
Bonjour,

Merci pour ton aide. En faite j'ai simplement enlevé dans mon code:
  if (ok == "non") {
     // nDate.focus();
     // nDate.select();
	  alert ("\nDate invalide!. Veuillez entrer une date valide: jj/mm/aaaa")
    }


Et la sa marche.

merci pour l'info
0