Avatar billede Slettet bruger
01. november 2005 - 17:54 Der er 9 kommentarer

Validering af flere felter på samme tid

Hej,

Jeg er ved at være træt af at validere med

if dette formfelt er galt på den then
...
elseif dette formfelt er galt på den then
...
end if

er der ikke nogen der har en ide til at validere således at alle felter bliver valideret på samme tid og at der bliver udskrevet en <ul><li> med de fejl der måtte være?
Avatar billede softspot Forsker
01. november 2005 - 17:57 #1
Eksempelvis:

for each fld in request.form
  if len(request.form(fld)) = 0 then
    ' feltet er ikke udfyldt
    strList = strList & "<li>" & fld & " er ikke udfyldt.</li>" & vbcrlf
  end if
next

Den skal naturligvis udbygges, så den tager hånd om alle de valideringer du ønsker at gennemføre...
Avatar billede softspot Forsker
01. november 2005 - 17:58 #2
Så kunne man jo lige start og slutte showet ordenligt af... :)

strList = "<ul>" & vbcrlf
for each fld in request.form
  if len(request.form(fld)) = 0 then
    ' feltet er ikke udfyldt
    strList = strList & "  <li>" & fld & " er ikke udfyldt.</li>" & vbcrlf
  end if
next
strList = strList & "</ul>" & vbcrlf
Avatar billede Slettet bruger
01. november 2005 - 18:00 #3
ja - men hvordan det? Det er jo ikke kun null jeg vil validere på, men også allemulige andre ting.. Hvordan gøres det du skriver generelt anvendeligt?
Avatar billede Slettet bruger
01. november 2005 - 18:11 #4
hmm - tror jeg laver det som et array i stedet og så adder jeg bare hver fejl til arrayet...
Avatar billede softspot Forsker
01. november 2005 - 18:12 #5
Umiddelbart lægger du flere if-sætninger ind i løkken,

strList = "<ul>" & vbcrlf
for each fld in request.form
  if len(request.form(fld)) = 0 then
    ' feltet er ikke udfyldt
    strList = strList & "  <li>" & fld & " er ikke udfyldt.</li>" & vbcrlf
  elseif not isnumeric(request.form(fld)) then
    ' feltet er ikke numerisk
    strList = strList & "  <li>" & fld & " er ikke et tal.</li>" & vbcrlf
  end if
next
strList = strList & "</ul>" & vbcrlf


Du har dog nogle udfordringer, herunder at finde en metode til hvordan du bestemmer hvad de enkelte felter skal valideres for og det synes jeg jo er lidt svært at gøre helt generisk... det kan være du selv har nogle idéer til denne del?
Avatar billede Slettet bruger
01. november 2005 - 18:16 #6
men på denne måde vil du jo.. hmm - når du tilgår request.form(fld) er det jo den aktuelle og det er ikke hensigten...
Avatar billede softspot Forsker
01. november 2005 - 18:33 #7
Jeg skal da ikke afvise at jeg har misforstået dit oplæg, men hvis du vil lave validering på en form der bliver sendt til serveren, er du vel nød til at løbe igennem felterne - og det er hvad jeg gør (skulle jeg mene)...

Hvis det ikke er det du ønsker, må du lige prøve at forklare lidt mere om hvad du så ønsker at opnå (eller vente på at der kommer en ekspert forbi, som kan se hvad du mener)... :)
Avatar billede Slettet bruger
01. november 2005 - 18:38 #8
bestemt, men det er balancen mellem det generelle og det specifikke jeg ønsker at få frem her. Hvis man bare løber felterne i gennem med for each, så evaulerer vi på alle felter på en gang (og sondrer dermed overhovedet ikke mellem hvilket felt vi har med at gøre - dvs. hvis vi vil vide om feltet er et email-felt, har vi ikke, i dit løsningsforslag, nogen mulighed for at gøre det).

En anden mulighed kunne være at tilgå navnet på feltet:

if instr(request.form(fld), "email") > 1 then
'kør emailvalidering
elseif instr(request.form(fld) "tal") > 1 then
'kør isNumeric validering
...
end if
Avatar billede softspot Forsker
01. november 2005 - 22:58 #9
Yes, men det er jo netop det jeg siger, den metode jeg foreslår, mangler. En mulighed er at opsætte et regelsæt for hvordan du navngiver dine felter en anden er at definere et andet sted hvilke felter der skal valideres hvordan. Det er jo op til dig at beslutte hvordan du synes bedst om at arbejde med data... men en iteration med for each kan stadig godt bruges i kombo med det du siger, så det lyder som en metode...
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
Kurser inden for grundlæggende programmering

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