Avatar billede sanne Nybegynder
08. marts 2001 - 10:37 Der er 12 kommentarer og
1 løsning

Validering

Hordan validere jeg på om alle felter i en formular er udfyldte og består af tal??
Avatar billede keysersoze Ekspert
08. marts 2001 - 10:47 #1
du kan finde det hele her:

http://www.eksperten.dk/spm/16252
Avatar billede sanne Nybegynder
08. marts 2001 - 11:15 #2
Svaret på den angivne side er kun en validering af et enkelt felt i en formular, men hvad hvis nu jeg har mange felter, der alle skal valideres for det samme?
Avatar billede jakoba Nybegynder
08. marts 2001 - 11:22 #3

//  for at teste alle felter skal du have:
// 1) en funktion der tester:
//
function test_om_blot_cifre ( frmelem ) {
  if ( /\\D/.test( frmelem.value ) )
    return false      // feltet indeholder noget der ikke er et ciffer
  else
    return true;      // feltet indeholder kun cifre.
}; //end test_om_blot_cifre ( form-element objekt )

// 2) og en funktion der scanner igennem din form for at finde de
//  formelementer der er felter og tester dem:
//
function test_form ( frm ) {
  var OK = true;
  for ( var i=0; OK && (frm.elements.length>i); i++ ) {
    if ( frm.elements[i].type = \"text\" ) {
      // det er et felt. test feltet.
      OK = OK && test_om_blot_cifre ( frm.elements[i] )
    } else {
      // ignorer form elementer med andre typer
    }
  };
  return OK;
}; //end test-form ( form object )

i teksten hvor du definerer formen udvides form tagget med  onsubmit=\'return test_form(this)\":

<form  ...  onsubmit=\'return test_form(this)\'>

mvh JakobA


Avatar billede jakoba Nybegynder
08. marts 2001 - 11:28 #4
foran linien med  return OK; kan du evt indsætte et par extra linier:

  if ( ! OK ) {
    alert( \"der må ikke skrives andet end tal her\" );
    frm.elements[i].focus();
  };
Avatar billede sanne Nybegynder
08. marts 2001 - 11:30 #5
Jeg forstår ikke denne sætning:

if ( /\\D/.test( frmelem.value ) )

og hvad hvis feltet godt må indeholde \",\" som f.eks. 133,22


   
Avatar billede jakoba Nybegynder
08. marts 2001 - 11:40 #6
det der  /\\D/  er en regular expression. Det er en måde at specificere bogstavmønstre. regular expressions omkranses af /-tegn. \\D betyder \"et tal der ikke er et ciffer\" og funktionen test vil returnere sand hvis den streng den får som parameter indeholder noget der starer til det.
læs mere om regular expression i:
http://developer.netscape.com/docs/manuals/js/client/jsref/index.htm
(led i index efter \"RegExp\")

, ville blive afvist. Det var bare en hurtig test jeg stavlede sammen.
mon ikke du kan finde en bedre test i keyzersoze\'s link.

mvh JakobA
Avatar billede jakoba Nybegynder
08. marts 2001 - 12:01 #7
Her er erikjacobsens sidste version udvidet med , og punktum og rettet lidt til:

function function test_om_blot_cifre ( frmelem ) {
  var lovlig = \",.0123456789\";  // cifre, komma og punktum er ok
  for (var i=0; i<frmelem.value.length; i++){
    if (lovlig.indexOf(frmelem.value.charAt(i)) < 0) {
    return false;
  }
}; //end function test_om_blot_cifre ( form-element objekt )

mvh JakobA
Avatar billede jakoba Nybegynder
08. marts 2001 - 12:04 #8
ups. Glemte en } efter linien med  return false;
Og fik et \"function\" for meget ned
Avatar billede sanne Nybegynder
08. marts 2001 - 12:11 #9
Den validere jo stadig kun et enkelt element i formen
Avatar billede jakoba Nybegynder
08. marts 2001 - 12:20 #10
Ja og så hvis du kalder den fra funktionen test_form()  (jakoba 08/03 2001 11:22:30) får du så testet alle felter i formen.
 
Avatar billede jakoba Nybegynder
11. marts 2001 - 00:49 #11
Altså
i <head sektionen i din html fil indsætter du:

<script language=\'javascript\'>

function function test_om_blot_cifre ( frmelem ) {
  var lovlig = \",.0123456789\";  // cifre, komma og punktum er ok
  for (var i=0; i<frmelem.value.length; i++){
    if (lovlig.indexOf(frmelem.value.charAt(i)) < 0) {
    return false;
  }
}; //end function test_om_blot_cifre ( form-element objekt )

function test_form ( frm ) {
  var OK = true;
  for ( var i=0; OK && (frm.elements.length>i); i++ ) {
    if ( frm.elements[i].type = \"text\" ) {
      // det er et felt. test feltet.
      OK = OK && test_om_blot_cifre ( frm.elements[i] )
    } else {
      // ignorer form elementer med andre typer
    }
  };
  return OK;
}; //end test-form ( form object )

</script>

Og i teksten tilføjer du  onsubmit=\'return test_form(this)\"  i din <form kommando:

<form  ...  onsubmit=\'return test_form(this)\'>

Avatar billede jakoba Nybegynder
11. marts 2001 - 00:52 #12
Øv, fandt en fejl:
Altså
i <head sektionen i din html fil indsætter du:

<script language=\'javascript\'>

function function test_om_blot_cifre ( frmelem ) {
  var lovlig = \",.0123456789\";  // cifre, komma og punktum er ok
  for (var i=0; i<frmelem.value.length; i++){
    if (lovlig.indexOf(frmelem.value.charAt(i)) < 0) {
    return false;
  };
  return true;
}; //end function test_om_blot_cifre ( form-element objekt )

function test_form ( frm ) {
  var OK = true;
  for ( var i=0; OK && (frm.elements.length>i); i++ ) {
    if ( frm.elements[i].type = \"text\" ) {
      // det er et felt. test feltet.
      OK = OK && test_om_blot_cifre ( frm.elements[i] )
    } else {
      // ignorer form elementer med andre typer
    }
  };
  return OK;
}; //end test-form ( form object )

</script>

Og i teksten tilføjer du  onsubmit=\'return test_form(this)\"  i din <form kommando:

<form  ...  onsubmit=\'return test_form(this)\'>
Avatar billede sanne Nybegynder
11. marts 2001 - 00:58 #13
Tak for hjælpen
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