14. maj 2003 - 11:14Der er
21 kommentarer og 1 løsning
Script til tids-felt
Jeg har brug for at script til nogle 5 tegns textfelter, hvor man skal kunne skrive tidspunkter i (altså f.eks. "11:45").
Til det skal jeg bruge et script med følgende:
1) Tjek at de 2 første tegn er tal indenfor 00 til 23 2) Tjek at de 2 sidste tegn er tal indenfor 00 til 59 3) Det 3. tegn skal altid være et ":"
Jeg har på et tidspunkt set noget lignende hvor ":"-tegnet stod fast fra start og så skrev man bare talene ind og så røg de sidste 2 tegn bare bagefter ":"-tegnet. Jeg har selvfølgelig glemt hvor jeg så det henne, men det er sådan noget jeg skal bruge.
Der mangler det med ":"-tegnet og din løsning kræver vel også at man har et felt hvor man indtaster time og et andet hvor man indtaster minutterne, men det skal være sådan at det hele bliver indtastet i ét felt.
phoenixv > Det skal også være sådan at dialogboxen popper op når man har indtastet noget forkert i textfeltet og ikke når man submitter... altså noget OnChange...
Synes godt om
Slettet bruger
18. maj 2003 - 10:48#12
Du må lige forklare antallet af tekstfelterne og opbygningen af siden så.
Derudover kan du jo ikke tjekke, mens man indtaster. Når jeg fx begynder at indtaste en dato, skriver jeg jo først et tal. Dette ene tal i sig selv er måske ikke en korrekt formateret dato, men det vil det blive, når jeg får skrevet resten af tallene og kolonnet. I det hele taget er det en dårlig idé at validere noget som helst, mens brugeren indtaster. Hvis man lige kommer til at lave en slåfejl, vil man hellere lige selv rette den end at få smidt en alert i hovedet, der forklarer én, hvor åndssvag man er at indtaste noget forkert. :)
Nej nej det behøver ikke være mens man taster, men jeg tænkte på en OnChange-funktion hvor man får en alert når man man er færdig med feltet - altså går videre til næste felt. Den reagerer jo først efter man har indtastet.
De textfelter der er, er udfor en række datoer hvor man skal indtaste et "fra"-tidspunkt og et "til"-tidspunkt.
Synes godt om
Slettet bruger
18. maj 2003 - 11:36#14
Så mener du ikke onChange, men onBlur. Alligevel er det højst u-brugervenligt, da der bør stå en bruger frit for, hvornår han vil rette en evt. fejlagtig indtastning. Hvis han lige vil videre til et andet felt, før han retter en anden fejl, bør han have lov til det. Men det er du måske ikke enig i?
Og mht. tekstfelterne, så skal jeg have detaljerede oplysninger om sidens opbygning. Der findes ingen magisk formular, der siger "tjek alle tekstfelter, der ser ud til at indeholde en dato". Desværre! :)
Jeg bruger OnChange i nogle andre textfelter og der virker det som jeg vil have det...
Det er lidt svært at skrive detaljeret hvordan det er opbygget for det er efterhånden ret kompliceret, men i princippet drejer det sig bare om at en funktion skal kigge textfeltet igennem når man OnChange'er (eller OnBlur'er)
Simpelt ser det sådan ud:
1) Start af løkke med f.eks. 30 dage
2) Textfelter udfor hver dag i løkke: <input name="dagtidfra<%=startd%>" type="text" class="input" id="dagtidfra<%=startd%>" value="09:00" size="5" maxlength="5" onChange="checkinput(this)"> - <input name="dagtidtil<%=startd%>" type="text" class="input" id="dagtidtil<%=startd%>" value="12:00" size="5" maxlength="5" onChange="checkinput(this)">
3) Slut løkke
Håber du kan nogle tricks :)
Synes godt om
Slettet bruger
18. maj 2003 - 16:09#16
Du kan godt lave en funktion, der hedder checkinput, hvis du vil det, men du skal bare vide, at det skræmmer brugere væk.
function checkinput(felt) { val = felt.value; if (!val.match(/^\d{2}:\d{2}$/) || parseInt(val.split(":")[0], 10) > 23 || parseInt(val.split(":")[1], 10) > 59) { alert("Datoformatet er forkert!"); felt.focus(); } }
Hvorfor skræmmer det brugerne væk? Ellers så skal de jo bagefter at de har siddet og indtastet en helvedes masse forkerte data ind, sidde og indtaste dem ind igen efter de har fået fejlmeddelelsen. Og så ville fejlmeddelelsen også skulle indeholde en lang liste over alle de felter der er indtastet forkert... så er det da federe hvis de allerede ved første felt finder ud af hvordan de skal skrive rigtigt... synes jeg.
Det virker! Mange tak :) Hvorfor kan jeg ikke give dig point?
Synes godt om
Slettet bruger
19. maj 2003 - 14:13#19
Jeg skal først lige svare. :)
De skal jo ikke indtaste dataene igen. Fejlmeddelelsen leveres, før formularen bliver sendt videre, og derfor skal de bare lige rette eventuelle slåfejl eller forglemmelser. Det giver generelt langt færre advarsler, hvilket er at foretrække, eftersom disse kan virke temmelig intimiderende på nybegyndere.
Ja - "liiige rette eventuelle fejl" kan betyde at de skal rette måske 100 textfelter hvis de alle er udfyldt forkert... nå, men det virker ihvertfald og det er jo det vigtigste :)
Tak for hjælpen.
Synes godt om
Slettet bruger
19. maj 2003 - 15:46#21
Det skal de jo alligevel - om man bruger den ene metode eller den anden. Forskellen ligger bare i antallet af advarselsbokse. :)
Synes godt om
Slettet bruger
19. maj 2003 - 15:47#22
I det hele taget bør det ikke være så svært at udfylde et felt, at man laver 100 fejl. Angiv tydeligt formatet på siden, evt. med et eksempel. Så er advarslerne forbeholdt dem, der bare ikke vil udfylde ordentligt.
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.