[VBScript]Postcode validation

Pagina: 1
Acties:

  • BonzO
  • Registratie: Augustus 2003
  • Laatst online: 05-12-2025
Ik ben bezig met het valideren van een form in vbscript. Ik heb er nu voor gezorgt dat alles wordt gevalideerd behalve de postcode dus eerst 4 cijfers en dan 2 letters. Ik weet dat het in delphi kan met een loopje maar in vbscript kom ik d'r niet uit.

Weet iemand misschien hoe je dit voor mekaar krijgt? Ik kom er namelijk niet uit na veel gegoogle en mijn vbscript ervaring.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

Wat heb je tot nu toe al bedacht en waar kom je niet uit dan? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Je kan binnen VBScript gewoon een string controle uitvoeren. Dus eerste 4 karakters moeten cijfer zijn, etc...

Verder is het ook mogelijk om gebruik te maken van een Regex (reguliere expressie), in de FAQ staat daarover een goede uitleg...

  • BonzO
  • Registratie: Augustus 2003
  • Laatst online: 05-12-2025
Ik ben ff bezig geweest, en nu zou hij toch moeten werken maar dat doet hij niet...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<script language="VBScript" type="text/vbscript">
<!--
Function IsValidPostcode(Postcode)
Dim PostodeChar, PostcodeChar1, ValidPostcode, acceptableChars
Dim acceptableChars1, iLoopCounter, iLoopCounter1, Cijfers, Letters, Postcode1
ValidPostcode = True

Poscode1 = UCase(Postcode)

acceptableChars = "0123456789"
acceptableChars1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Cijfers = mid(Postcode1, 1, 4)
Letters = mid(Postcode1, 5, 2)
'Loop voor controle van cijfers
For iLoopCounter = 1 to Len(Cijfers)

PostcodeChar = Mid(Cijfers, iLoopCounter, 1)

If InStr(acceptableChars, PostcodeChar) = 0 Then
ValidPostcode = False
End if
Next
'Loop voor controle van letters
For iLoopCounter1 = 1 to Len(Letters)

PostcodeChar1 = Mid(Letters, iLoopCounter, 1)

If InStr(acceptableChars1, PostcodeChar1) = 0 Then
ValidPostcode = False
End if
Next

IsValidPostcode = ValidPostcode
End function
//-->
</script>


Ik heb het oproepscript (het essentiele deel ervan) er alsvolgt uitzien:
code:
1
2
3
4
5
6
7
8
9
If Len(document.aanmelden.txtPostcode.Value) < 6 and Len(document.aanmelden.txtPostcode.Value) > 0 Then
   if intCheck = 0 then MsgBox "Niet genoeg tekens ingevuld": intCheck = 1
End if
If Len(document.aanmelden.txtPostcode.Value) < 1 Then
   if intCheck = 0 then MsgBox "Geen Postcode ingevuld": intCheck = 1
End if
If IsValidPostcode(document.aanmelden.txtPostcode.Value) = False Then
   if intCheck = 0 then MsgBox "Foute postcode": intCheck = 1
End if

De cijfers kan ik ook controleren met IsNumeric() maar ik wil het graag zo werkend hebben.

Als ik bij deze code het form ga versturen en ik heb een foute postcode ingevuld geeft hij helemaal geen melding terwijl hij dat wel zou moeten doen.

offtopic:
Ik heb even 2x een dim aangemaakt om variabelen te defineren om de opmaak van die topic niet zo erg te verklooien

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 15-05 12:53
hoe kun je dit postcode-veld posten naar de server, en een response terug krijgen (een variabele) zonder je complete form te posten ? (dus zonder dat je ziet dat je het forumier aan het posten bent)

| www.everythingisspiritual.com | www.mosaic.org |


  • BonzO
  • Registratie: Augustus 2003
  • Laatst online: 05-12-2025
whitehouse schreef op dinsdag 16 november 2004 @ 14:30:
hoe kun je dit postcode-veld posten naar de server, en een response terug krijgen (een variabele) zonder je complete form te posten ? (dus zonder dat je ziet dat je het forumier aan het posten bent)
Ik wil het postcode-veld valideren (wat dus nog niet wil werken), dus je vraag is niet echt van belang... maar het posten word gedaan met een form in hetzelfde bestand waarin de vbscripts staan om de valideren. Bij het versturen van het form met de volgende code:
code:
1
<form name="aanmelden" method="post" action="form_ac.asp">

Daar wordt dus een asp code aangeroepen om het vervolgens met asp/sql in een database te pleuren...
Maar dit is allemaal niet van belang bij mijn vraag. Ik heb dan ook alleen de stukjes script gepost die van belang zijn voor het valideren van het postcode veld, txtPostcode genaamd.

[ Voor 3% gewijzigd door BonzO op 16-11-2004 14:37 ]


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 16-05 11:22
Je moet natuurlijk wel de functie aanroepen die de postcode gaat valideren, en als die "true" returned pas het asp bestand wat het in de DB zet aanroepen. Maar dan hoort het volgens mij niet meer bij P&W thuis maar bij de buren (W&G)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • BonzO
  • Registratie: Augustus 2003
  • Laatst online: 05-12-2025
riezebosch schreef op dinsdag 16 november 2004 @ 14:39:
Je moet natuurlijk wel de functie aanroepen die de postcode gaat valideren, en als die "true" returned pas het asp bestand wat het in de DB zet aanroepen. Maar dan hoort het volgens mij niet meer bij P&W thuis maar bij de buren (W&G)
Dit gebeurt ook:
code:
1
If IsValidPostcode(document.aanmelden.txtPostcode.Value) = False .........

Als hij True is gaat hij ook gewoon door met het posten van, in dit geval, de postcode.

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
reguliere expressies zijn hiervoor het makkelijkst :).
http://msdn.microsoft.com...ript56/html/vsmthtest.asp

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
<script language="VBScript" type="text/vbscript">
<!--
Function IsValidPostcode(Postcode)
    Dim regExp
    Set regExp = new RegExp
    regExp.Global = True
    regExp.IgnoreCase = True
    regExp.Pattern = "[a-z]{4}[0-9]{2}"
    IsValidPostcode = regExp.test(postcode)
    Set regExp = nothing
End Function
</script>

  • ZeilDude
  • Registratie: Juli 2004
  • Laatst online: 19-02-2022
pjotrk schreef op dinsdag 16 november 2004 @ 14:43:
reguliere expressies zijn hiervoor het makkelijkst :).
http://msdn.microsoft.com...ript56/html/vsmthtest.asp

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
<script language="VBScript" type="text/vbscript">
<!--
Function IsValidPostcode(Postcode)
    Dim regExp
    Set regExp = new RegExp
    regExp.Global = True
    regExp.IgnoreCase = True
    regExp.Pattern = "[a-z]{4}[0-9]{2}"
    IsValidPostcode = regExp.test(postcode)
    Set regExp = nothing
End Function
</script>
Mag ik die eerste zin verbeteren? Reguliere expressies zijn hiervoor zeer geschikt. Reguliere expressies zijn echter niet heel erg eenvoudig, het duurt even voordat je door hebt hoe je ze moet formuleren. Toch raad ik ze je aan, omdat ze zeer krachtig zijn in vele programmeertalen.

  • BonzO
  • Registratie: Augustus 2003
  • Laatst online: 05-12-2025
Één probleem: als ik een voorbeeld wil weergeven bij dat script geeft hij het volgende aan:
Regel 17 (in het script hierboven is dat 12) Teken 1:
Instructie wordt verwacht.

Edit:
En nog iets: waar staat informatie over reguliere expressies als ik dat even tussendoor mag vragen (zonder eerst zelf te gaan zoeken)?

[ Voor 32% gewijzigd door BonzO op 16-11-2004 14:53 ]


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

BonzO schreef op dinsdag 16 november 2004 @ 14:51:
Één probleem: als ik een voorbeeld wil weergeven bij dat script geeft hij het volgende aan:
Regel 17 (in het script hierboven is dat 12) Teken 1:
Instructie wordt verwacht.
Wellicht moet je even de comment <!-- verwijderen. Deze wordt namelijk niet afgesloten.
Edit:
En nog iets: waar staat informatie over reguliere expressies als ik dat even tussendoor mag vragen (zonder eerst zelf te gaan zoeken)?
In de FAQ, ,zie: P&W FAQ - Regular expressions

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
ZeilDude schreef op dinsdag 16 november 2004 @ 14:47:
[...]


Mag ik die eerste zin verbeteren? Reguliere expressies zijn hiervoor zeer geschikt. Reguliere expressies zijn echter niet heel erg eenvoudig, het duurt even voordat je door hebt hoe je ze moet formuleren. Toch raad ik ze je aan, omdat ze zeer krachtig zijn in vele programmeertalen.
Daar heb je idd wel gelijk in :). Zeker in het begin zijn reguliere expressies best lastig, maar als je het eenmaal doorhebt werkt het (zeker voor dit soort controles) meestal veel eenvoudiger dan zelf een functie schrijven.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

8)7

Allemaal clientside zaken, welke thuishoren in Webdesign & Graphics. Je kan er alleen gif op innemen dat er binnen een uur iemand gaat vragen waarom je dit in VBScript maakt en niet in Javascript.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • BonzO
  • Registratie: Augustus 2003
  • Laatst online: 05-12-2025
gorgi_19 schreef op dinsdag 16 november 2004 @ 14:59:
8)7

Allemaal clientside zaken, welke thuishoren in Webdesign & Graphics. Je kan er alleen gif op innemen dat er binnen een uur iemand gaat vragen waarom je dit in VBScript maakt en niet in Javascript.
Het is voor school en het MOET in Vbscript ;) , naja, ik kan het beter anders zeggen: we mogen geen javascript gebruiken.

Ik heb het nu nog een probleem... Als ik die functie namelijk oproep, dus zeg: als hij "False" is moet hij een message box weergeven met dat de postcode niet klopt... Dat wilt hij dus nog niet echt goed doen.

Als ik nu namelijk een goede postcode invoer stuit hij op de volgende controle. Als ik een foute invoer doet hij helemaal niks meer, een soort form-vastloper.

Edit:
Hmm, best vaag nu, de ene keer doet ie het wel, de andere keer weer niet :O

[ Voor 6% gewijzigd door BonzO op 16-11-2004 15:49 ]


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Wat je overigens ook nog even kan doen is [google=VBScript Regular Expression] en dan vind je bijvoorbeeld de volgende websites:Wellicht heb je daar nog wat aan....

[ Voor 3% gewijzigd door Woudloper op 16-11-2004 15:52 ]


  • ZeilDude
  • Registratie: Juli 2004
  • Laatst online: 19-02-2022
gorgi_19 schreef op dinsdag 16 november 2004 @ 14:59:
8)7

Allemaal clientside zaken, welke thuishoren in Webdesign & Graphics. (...)
Hmmm, waarom heb ik nou nergens gelezen dat dit perse clientside moet? Het kan toch ook serverside met ASP? Gaat het topic dan weer terug naar PW?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

ZeilDude schreef op dinsdag 16 november 2004 @ 15:51:
Hmmm, waarom heb ik nou nergens gelezen dat dit perse clientside moet? Het kan toch ook serverside met ASP? Gaat het topic dan weer terug naar PW?
BonzO schreef op dinsdag 16 november 2004 @ 15:07:
[...]
Ik heb het nu nog een probleem... Als ik die functie namelijk oproep, dus zeg: als hij "False" is moet hij een message box weergeven met dat de postcode niet klopt... Dat wilt hij dus nog niet echt goed doen.
Als je met msgboxes aan de gang gaat, zit je sowieso clientside :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ZeilDude
  • Registratie: Juli 2004
  • Laatst online: 19-02-2022
gorgi_19 schreef op dinsdag 16 november 2004 @ 15:59:
[...]
Als je met msgboxes aan de gang gaat, zit je sowieso clientside :)
Jep, sorry, je hebt helemaal gelijk. Ik heb zitten :Z.
Maar van mij mag hij het best serverside doen hoor ;).

  • BonzO
  • Registratie: Augustus 2003
  • Laatst online: 05-12-2025
Van mij mag serverside ook, maarja het is een school opdracht en daar zitten regels aan vast. Je moet van alles wat hebben, dus mijn groep heeft gekozen voor een clientside form controle.

En, euh, oja, het werkt nu allemaal perfect, ik had een klein foutje gemaakt zodat hij alleen een msgbox weergaf bij de eerste keer dat je het fout intypte en als je het daarna nog een keertje fout intypte gaf hij geen msgbox. Prob solved, thanks voor info iedereen(vooral regex :) )
Twee super links, veel info, die mogen er bij het FAQ ook bij komen.

[ Voor 39% gewijzigd door BonzO op 16-11-2004 16:53 ]

Pagina: 1