|
| regulaært udtryk Fra : Kasper |
Dato : 16-04-01 20:45 |
|
Hej !
Hvordan kan det være at flg script giver lov til at man skriver 12,56?
Det burde jo ikke acceptere kommatal. Jeg tester i explorer 5.5.
<SCRIPT>
function testit() {
if (!(/\d+$/.test(document.Form1.testfield.value))) {
alert("Fejl i indtastning")
document.Form1.testfield.focus()
}
}
</SCRIPT>
<BODY>
<FORM NAME="Form1">
<INPUT TYPE=TEXT NAME="testfield">
<INPUT TYPE=BUTTON VALUE="Test" onClick="javascript:testit()">
</FORM>
Med venlig hilsen
Kasper
| |
Jens Peter Karlsen (17-04-2001)
| Kommentar Fra : Jens Peter Karlsen |
Dato : 17-04-01 06:46 |
|
Du mangler en "return false" ellers vil formen blive submittet uanset
fejlmeddelelsen.
Regards Jens Peter Karlsen. Microsoft MVP - Frontpage.
On Mon, 16 Apr 2001 21:45:11 +0200, Kasper <kasper@huleboer.dk> wrote:
>Hej !
>
>Hvordan kan det være at flg script giver lov til at man skriver 12,56?
>Det burde jo ikke acceptere kommatal. Jeg tester i explorer 5.5.
>
| |
Kasper (17-04-2001)
| Kommentar Fra : Kasper |
Dato : 17-04-01 13:53 |
|
Skidt med om formen bliver submittet. javascriptet kan sagtens køre
alligevel. Pointen er hvorfor at udtrykket accepterer kommaer.
Med venlig hilsen
Kasper
Jens Peter Karlsen wrote:
> Du mangler en "return false" ellers vil formen blive submittet uanset
> fejlmeddelelsen.
>
> Regards Jens Peter Karlsen. Microsoft MVP - Frontpage.
>
> On Mon, 16 Apr 2001 21:45:11 +0200, Kasper <kasper@huleboer.dk> wrote:
>
> >Hej !
> >
> >Hvordan kan det være at flg script giver lov til at man skriver 12,56?
> >Det burde jo ikke acceptere kommatal. Jeg tester i explorer 5.5.
> >
| |
Claus Schmidt (22-04-2001)
| Kommentar Fra : Claus Schmidt |
Dato : 22-04-01 21:15 |
|
"Kasper" ::
> Hvordan kan det være at flg script giver lov til at man skriver 12,56?
Jeg er ikke sikker på at det er det der er grunden, men
denne linje:
> if (!(/\d+$/.test(document.Form1.testfield.value))) {
tyder måske på at det er negationen det er galt med,
altså udråbstegnet i første parantes.
Normalt ville man bruge det med lighedstegn a la:
if (x != y) doso
Her har man dog også en variabel på begge sider der
skal matches mod hinanden, det har du (heller) ikke
i udtrykket.
Det kan være noget helt andet, det er bare et gæt, så
hvis syntaksen i virkeligheden er korrekt beklager jeg.
--
[claus]
| |
Jonathan Stein (22-04-2001)
| Kommentar Fra : Jonathan Stein |
Dato : 22-04-01 22:54 |
|
Claus Schmidt wrote:
> Det kan være noget helt andet, det er bare et gæt, så
> hvis syntaksen i virkeligheden er korrekt beklager jeg.
Det er den. Hvis "test" er en funktion, der returnerer en boolsk værdi
(true eller false), kan man nøjes med: if (test(...)) { // gør noget... }
- og sætter man et ! foran, så der står: if (!test(...)) får man den den
modsatte værdi (altså true, hvis funktionen returnerer false og omvendt).
Men jeg ser lige, at Kasper vist har glemt en ^ i starten af udtrykket.
Kasper: Prøv med /^\d+$/ (dit nuværende udtryk matcher "56" i "12,56" og
derfor godtages "12,56").
M.v.h.
Jonathan
| |
top (23-04-2001)
| Kommentar Fra : top |
Dato : 23-04-01 07:25 |
|
>> Hvordan kan det være at flg script giver lov til at man skriver 12,56?
>> if (!(/\d+$/.test(document.Form1.testfield.value))) {
Den giver også lov til at skrive sdfknsdkfsdfn12,56
Du tester kun på at der er cifre i slutningen af strengen (det svarer
til /[0-9]+$/)
Hvis det er meningen strengen kun må bestå af cifre, så prøv /^\d+$/
-Top
PS: if(!x) er også et validt udtryk
> if (x != y) doso
>
| |
|
|