Controle invoervak

Status
Niet open voor verdere reacties.

NickB

Nieuwe gebruiker
Lid geworden
29 apr 2008
Berichten
2
Ik zit met een probleempje waarvan ik hoop dat iemand kan helpen.

Ik heb een bepaald formulier waarin ik een geboortedatum moet kunnen opgeven om deze later in een database weg te schrijven, in volgend formaat (dd-mm-yyyy).

Met javascript check ik of de geboortedatum is ingevuld:
Code:
 function isFilled(veld) {
  if (veld.value == "" ||
   veld.value == null) {
  return false;
  }
  else {
   return true;
  }
 }
 
Daarna check ik of het wel een datum is die bestaat (i.v.m. schrikkeljaren, 32 januari e.d.)
 
 function isDate(veld) {
  dateStr = veld.value;
  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
  var matchArray = dateStr.match(datePat); // formaat ok?
  
  if (matchArray == null) {
   return false;
  }
  
  day = matchArray[1]; // datum in variabelen steken
  month = matchArray[3];
  year = matchArray[5];
  
  if (month < 1 || month > 12) { // check of maand klopt
   return false;
  }
  
  if (day < 1 || day > 31) {
   return false;
  }
  
  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
   return false;
  }
  
  if (month == 2) { // 29 februari checken
   var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
   if (day > 29 || (day==29 && !isleap)) {
    return false;
   }
  }
  return true;
 }
 
Dit zit dan nadien in een functie die ik {isReady(form) <- verwijzing naar formulier} heb genoemd, wat allemaal prima werkt totdat ik i.p.v. een "-" tussen de dd-mm-yyyy zet, bijvoorbeeld een "/" zet (dus dd/mm/yyyy).
 
Ik probeerde dit op te lossen met een nieuwe functie maar hier ga ik compleet de mist in denk ik..
 
 function isFormat(veld) {
  if (veld.length == 10) {
   if (veld.charAt(3) == "-" && veld.charAt(6) == "-") {
    return false;
   }
  } else {
   return true;
  }
 }

Ik check de totale lengte van de geboortedatum (10 characters lang) en check vervolgens of er een "-" staat op character #3 en character #6. Ziet iemand de fout?

Groeten,

Nick
 
Laatst bewerkt door een moderator:
Wat gaat er precies mis?


De enige fout die ik heb kunnen ontdekken is dat je "return false" en "return true" hier hebt omgedraaid en dat je controle op de "-" tekens geen "else" heeft:
Code:
function isFormat(veld) {
  if (veld.length == 10) {
   if (veld.charAt(3) == "-" && veld.charAt(6) == "-") {
    return false;
   }
  } else {
   return true;
  }
 }
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan