Avatar billede dannv Nybegynder
01. december 2004 - 13:55 Der er 9 kommentarer og
1 løsning

obBlur regex validering

Jeg har fundet følgende script (her på eksperten..) til validering af textfelt om indholdet er numerisk:

onblur="if(!this.value.match(/^[0-9\+ ]+$/)&&this.value!='')alert('Du kan kun indtaste tal (1-9)');this.focus();"

Det virker næsten i FireFox, men ie crasher totalt. Går ind i et loop og så ellers farvel... er der nogen der kan løse problemet.

(der må indtastes 0-9, - og blank ( dec sep skal være .))

Kender ikke noget til regex, men ovenstående accepterer ikke . og -, så det skal tilføjet...
Avatar billede dannv Nybegynder
01. december 2004 - 13:56 #1
...ja og så hedder det onBlur...
Avatar billede roenving Novice
01. december 2004 - 14:01 #2
Måske:

onblur="if(!this.value.match(/^[ \+-]?\d+(\.\d+)?$/))alert('Du kan kun indtaste tal (0-9)');return false;"

?-)
Avatar billede synfab Nybegynder
01. december 2004 - 14:03 #3
onblur="if(!this.value.match(/^[0-9\-\. ]+$/)&&this.value!=''){alert('Du kan kun indtaste tal (1-9)');this.focus();}"
Avatar billede dannv Nybegynder
01. december 2004 - 14:24 #4
Det var jo næsten for nemt for jer.... ;-)

Lige en lille krølle... kan man i tjekket sikre at hvis input indeholder et . så skal der mindst stå 1 tal før og 1 tal efter...??

så man ikke for følgende værdier .12 eller 12.
Avatar billede roenving Novice
01. december 2004 - 14:27 #5
Det gør min udgave faktisk allerede !-)

Regexp læses:

Fra starten (^) af værdien kan der være et mellemrum, et plus eller et minus, derefter skal der være mindst et ciffer, eventuelt efterfulgt af et punktum med mindst et ciffer efter indtil slutningen af værdien ($) ...
Avatar billede dannv Nybegynder
01. december 2004 - 14:33 #6
ja det gør den da også.....

roenvig det ser ud til at dit er det jeg er ude efter, kan du i samme åndedrag opfylde endnu et ønske..:;

sæt focus på feltet hvor indtastningen foregik!!
Avatar billede roenving Novice
01. december 2004 - 14:38 #7
Hrm, jeg huskede forkert med focus()-tingen, så det er bare return false; som skal laves om til den oprindelige this.focus();
Avatar billede dannv Nybegynder
01. december 2004 - 14:57 #8
ok vi er vist kommet der til hvor vi snart skal have nogle svar for point, jeg endte op med følgende:

onblur="if(!this.value.match(/^[ \+-]?\d+(\.\d+)?$/)){alert('Du kan kun indtaste tal (1-9)');this.focus();}"

kun et lille spørgsmål, når jeg trykker enter og har indtastet en ugyldigt værdi bliver formen submittet alligevel... nogen forklaring/løsning??
Avatar billede roenving Novice
01. december 2004 - 15:02 #9
Sæt en onsubmit på form-tagget:

<form ... onsubmit="return (!this.FELTNAVN.value.match(/^[ \+-]?\d+(\.\d+)?$/))?false:true;">

-- og velbekomme '-)
Avatar billede roenving Novice
01. december 2004 - 15:12 #10
Tak for point ;~}
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