13. oktober 2005 - 11:29Der er
19 kommentarer og 1 løsning
Ikke vise at man skriver til tekstboks ved keypress
jeg har lavet en slags validering. Når jeg trykker på en key i et tekstfelt checker den om det er tilladt. er det ikke sletter den det igen fra feltet.
Men brugeren ser at der bliver indtastet og slettet en char igen, hvordan undgår jeg dette?
hm det er en uheldig fremgangsmåde... dette er bedre
1. fortælle brugeren hvilke tegn der er tilladt 2. hvis brugeren skriver ikke tilladte tegn får han en besked om dette 3. først når alle felter er valide kan brugeren submitte formen
Du skal reagere på onkeydown-, onkeypress- eller onkeyup-events og så sortere de ugyldige tagn fra inden de når ind i feltet. event-objektet har et par egenskaber hvorfra du kan læse hvilken taste der er trykket (i form af tal) og den skal du ind og kigge på. Vær dog opmærksom på at du skal checke på en kombination af keyCode og shiftKey, altKey og ctrlKey for at finde ud af hvilket tegn det svarer til...
Ja ok. Men nu er det sådan at det ikke nødvendigvis er med tilladte chars. Bare et eksempel. Bruger det til samlet længde på flere felter. Det skal bare ikke ses for brugeren at feltet lige bliver skrabet men at han bare ikke kan indtaste flere værdier.
Jeg vil stadig anbefale f.eks. onkeydown-eventet. Du får bare ikke brug for keyCode, men skal i stedet summere længden af en række felter og returnere false hvis længden er nået...
Men hey hvordan får jeg nu slet knappen til at virke? For jeg kan indtaste det max antal tegn og det er også fint nok. Men så kan jeg bare ikke slette dem igen, skal jeg nu til at checke på backspace?
Prøv dette (om ikke andet så brug det som udgangspunkt for hvordan du kan checke for kontroltasterne):
<script type="text/javascript"> var MAX_ALLOWED_LENGTH = 30; function validate(obj) { if(obj) { var kc = event.keyCode; // DETTE FUNGERER GIVETVIS KUN IE!!
Det fungerer som indikeret kun i IE, da det aktuelle event vist nok ikke findes på den måde i FF, Mozilla osv. Men det kan være der er en eller anden som kan fortælle dig det...
Hvis det skal fungere i FF, så skal du åbenbart reagere på onkeypress i stedet for onkeydown - og det er altså det forslag fra kommentaren 13/10-2005 13:10:44.
Synes godt om
Ny brugerNybegynder
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.