WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Att inte tillåta att skriva . (punkt) (https://www.wn.se/forum/showthread.php?t=22779)

HenSod 2007-08-10 13:03

Jag har ett textfält där jag inte tillåter att man skriver . (punkt). För att kontrollera så att man inte skriver punkt använder jag mig av händelsehanteraren onkeypress och såhär ser koden ut:
Kod:

//verify for netscape/mozilla

var isNS4 = (navigator.appName=="Netscape")?1:0;

<input type="text" name="domainname" id="domainname" class="textfield" onKeypress="if(!isNS4){if (event.keyCode==190) event.returnValue = false;}else{if (event.which==190) return false;}">

Olyckligtvis fungerar inte den koden. Vad kan vara fel?

fors 2007-08-10 13:24

Jag vet inte vad svaret på din fråga är, men du kollar väl detta på serversidan också?

HenSod 2007-08-10 15:40

Ja, jag kollar det även på serversidan.

oddholst 2007-08-13 11:47

Citat:

Originally posted by HenSod@Aug 10 2007, 13:03
... klippetiklipp
Olyckligtvis fungerar inte den koden. Vad kan vara fel?

Du är nog inne på rätt spår, men du måste även tänka på att en användare ändå kan lägga in en punkt genom att klippa&klistra.
Gör istället en javascriptfunktion som, för varje onkeypress kontrollerar om någon av tecknen i strängen innehåller det oönskade tecknet.

Använd metoden indexOf('.') för att hitta punkten du vill ta bort. Funktionen returnerar positionen där den sökta strängen startar (returnerar -1 om strängen inte finns).

Sen använder du metoden replace(".","") för att byta ut den första funna punkten. Jag har inte koll på vad metoden returnerar. Ev kan man skippa steget med indexOf(). Loopa igenom tills inga fler förekomster hittas.

Tänk dock på att det inte går att detektera en klistra-in-händelse. Det finns ingen "onpaste"... Antingen sätter du en timer som kontrollerar rutan med jämna mellanrum (kan vara resurskrävande) eller så görs kontrollen när rutan lämnas (onblur).

Lite tips iallafall...

koala 2007-08-13 18:24

onchange triggas väl ändå av paste?

oddholst 2007-08-13 18:42

Citat:

Originally posted by koala@Aug 13 2007, 18:24
onchange triggas väl ändå av paste?

Jo, du har rätt. Det funkar nog. Valideringen sker dock ändå först när man lämnar fältet. Detta gäller såväl onblur och onchange...


Alla tider är GMT +2. Klockan är nu 12:59.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson