Avatar billede l_otto Nybegynder
25. januar 2007 - 13:32 Der er 8 kommentarer og
1 løsning

Validering af felt

Jeg vil gerne have folk skal skrive:

18-10-1973

Når de udfylder deres føsdato... er der nogen der kan hjælpe med det ? :-)

Her kan I se den vaildering jeg bruger nu..

<SCRIPT LANGUAGE="JavaScript">
function Check_Form(theForm) {
  err = '';
 


  if (theForm.dato.value == '') {
    err += "Fødelsdato mangler\r";
  }
  if (theForm.email.value == '') {
    err += "E-mail mangler\r";
  } else {
    ema = theForm.email.value;
    pos1 = ema.indexOf('@',0);
    pos2 = ema.indexOf('.',pos1);
    str = ema.substring(ema.length-1,ema.length+1);
    if (pos1 < 0 || pos2 < 0 || str == '.') {
    theForm.email.style.color = '#FFFFFF';
    theForm.email.style.backgroundColor = '#FF0000';
    err += "E-mail ikke gyldig\r";
  }
}
if (err != ''){
  alert('Følgende felter mangler at blive udfyldt:\r' + err);
  return (false);
} else {
  return (true);
}

</script>
Avatar billede l_otto Nybegynder
25. januar 2007 - 13:46 #1
sorry det ser sådan her ud:

if (theForm.dato.value == '' || parseInt(theForm.dato.value) != theForm.dato.value ) {
    err += "Fødelsdato skal være et tal";
  }
else if ( theForm.dato.value.length != 8 )
{
  err += "Fødelsdato skal være 8 tal";
Avatar billede roenving Novice
26. januar 2007 - 05:39 #2
Uden at teste om datoen er en valid dato (til det skal du omkring et Date-objekt !-)

if(!theForm.dato.value.match(/^\d\d-\d\d-\d{4}$/))
    err += "Fødelsdato mangler eller er forkert format\r";
Avatar billede jhe-ting Nybegynder
26. januar 2007 - 06:06 #3
Da datoformatet på Date-objektet ikke passer med det ønskede format må man skille den indtastede værdi ad og indstille datokomponenterne hver for sig.


var datoFormat = new RegExp("^(\d\d)-(\d\d)-(\d{4})$");
var enDato = new Date();
var datoOk = false;
if ( theForm.dato.value.match(datoFormat) ) {
    try {
        enDato.fullYear = parseInt(RegExp.$3);
        enDato.month = parseInt(RegExp.$2)-1;
        enDato.date = parseInt(RegExp.$1);
        datoOk = true;
    } catch (error) { ; // Ignore error }
}
if (!datoOk) {
    err += "Format for fødselsdag: DD-MM-ÅÅÅÅ\r"
}
Avatar billede roenving Novice
26. januar 2007 - 06:09 #4
Øeh, hvad er 'enDato.fullYear' ?-)
Avatar billede jhe-ting Nybegynder
26. januar 2007 - 06:20 #5
ja - der skulle ha' stået:

        enDato.setFullYear(
            parseInt(RegExp.$3),
            parseInt(RegExp.$2)-1),
            parseInt(RegExp.$1));

og ikke noget med enDato.month eller enDato.date.

;o)
Avatar billede roenving Novice
26. januar 2007 - 06:29 #6
-- men du tester jo heller ikke, om værdierne virker ?-)

   
if(theForm.dato.value.match(/^\d\d-\d\d-\d{4}$/)){
    var d = theForm.dato.value.split("-");
    var cDate = new Date(d[2],d[1]-1,d[0]);
    if(d[2] != cDate.getFullYear() || d[1] != cDate.getMonth()+1 || d[0] != cDate.getDate())
        err += "Fødselsdato er ugyldig\n";
}else{
    err += "Fødselsdato mangler eller er forkert format\r";
}
Avatar billede jhe-ting Nybegynder
27. januar 2007 - 00:31 #7
Dato objektet er meget venligt til at tolke 'forkerte' værdier ved at justere andre felter, uden at generere en exception som jeg fejlagtigt antog - sorry.

26/01-2007 06:29:30 ser ud til at være det rigtige.

M.h.t. fejlmeddelelser mener jeg at det er mere brugervenligt at forklare hvilket format der forventes, og ikke bare meddele at formatet er forkert.
Avatar billede roenving Novice
27. januar 2007 - 00:35 #8
-- sådan noget forventer jeg findes på siden i forvejen, for ellers brugeren jo ikke en chance !-)
Avatar billede jhe-ting Nybegynder
02. februar 2007 - 00:41 #9
roenving bør ha' point for sit indlæg 26/01-2007 06:29:30.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester