Problème Javascript

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
Configuration: Windows XP
Firefox 3.5.7

2 réponses

  1. 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
    1. 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