Problème Javascript

Fermé
Profil bloqué - 9 févr. 2010 à 18:03
 Profil bloqué - 10 févr. 2010 à 10:22
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
A voir également:

2 réponses

Zestyr Messages postés 466 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
9 févr. 2010 à 18:22
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é
10 févr. 2010 à 10:22
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