11. august 2002 - 13:01Der er
36 kommentarer og 1 løsning
validering af input
Mjello...
Jeg ønsker at validere at brugeren rent faktisk kun forsøger at uploade jpg eller jpeg - billeder.
Normalt tjekker jeg sådan her: if (document.bruger.brugernavn.value=="") {alert("Angiv venligst et brugernavn!"); document.bruger.brugernavn.focus(); return}
Men i det her tilfælde skal den altså ikke tjekke om feltet er tomt MEN OM de sidste tre/fire tegn er enten "jpg" eller "jpeg"...
ah - det kan være at det er fordi hvis man først klikker og så prøver igen...
Synes godt om
Slettet bruger
11. august 2002 - 16:02#10
Næ, du har ret; det virker ikke med .htm-filer... Jeg prøver igen! :)
Synes godt om
Slettet bruger
11. august 2002 - 16:03#11
ja - prøv at vælg f.eks. en html-fil og klik. Så kommer der fejl - klik så igen - ingen fejl.
Synes godt om
Slettet bruger
11. august 2002 - 16:03#12
jo - den virker med htm - men ikke hvis man klikker flere gange. mærkeligt.
Synes godt om
Slettet bruger
11. august 2002 - 16:07#13
Nej, nu har jeg fundet ud af min fejl. Jeg havde bare genbrugt et funktionsnavn som et variabelnavn. **lyden af et tog, der suser forbi** Jeg uploader lige det færdige resultat...
Synes godt om
Slettet bruger
11. august 2002 - 16:09#14
Nu er det uploadet på den samme url.
Synes godt om
Slettet bruger
11. august 2002 - 16:13#15
Har lige 2 hurtige follow-ups:
1) For nu at blive HELT picky - så burde den vel først melde fejl HVIS feltet ikke er tomt. Det kunne jo være brugeren skulle udfylde andre ting i formen men IKKE billedet.
2) Min form har allerede en onSubmit="return false" - hvis "return valider(this);" skal ind - bliver den samlede streng så:
onSubmit="return false; return valider(this);"
?
Synes godt om
Slettet bruger
11. august 2002 - 16:15#16
Mht. det første, så retter jeg det lige.
Man bør ikke sætte return false ind i onSubmit, da det betyder, at formularen slet ikke sendes! Du kunne evt. lige smide et link!
Synes godt om
Slettet bruger
11. august 2002 - 16:16#17
1'eren er rettet nu.
Synes godt om
Slettet bruger
11. august 2002 - 16:18#18
mht (2) - så jo for jeg validerer en masse på om andre felter er udfyldt/ikke er tomme ?!
Synes godt om
Slettet bruger
11. august 2002 - 16:20#19
Derfor bør man stadig ikke skrive return false i onSubmit-handleren! Det kunne godt lyde, som om det er lidt dårligt kodet. Jeg vil gerne se på den og optimere den, hvis du synes!
Har en henvisning til scriptet (<script language="javascript" src="scripts/bruger.js"></script>)
der lyder sådan:
function validate(){ if (document.bruger.brugernavn.value=="") {alert("Angiv venligst et brugernavn!"); document.bruger.brugernavn.focus(); return} else document.bruger.submit() }
Synes godt om
Slettet bruger
11. august 2002 - 16:26#21
virker fint
Synes godt om
Slettet bruger
11. august 2002 - 16:30#22
Det virker, men det er programmeringsmæssigt forkert! :) Alt halløjet burde lægges ind i én valideringsfunktion, som så blev kaldet i formens onSubmit:
<form onSubmit="return valider();">
Valideringsfunktionen skal så returnere enten true eller false, alt efter om formen skal sendes eller ej!
Synes godt om
Slettet bruger
11. august 2002 - 16:32#23
Hvad mere er, hvis brugeren skriver noget i tekstfeltet og så trykker enter (hvilket vedkommende er vant til fra fx Google), så sker der ikke noget!
Synes godt om
Slettet bruger
11. august 2002 - 16:33#24
Altså med dit script! :)
Synes godt om
Slettet bruger
11. august 2002 - 16:42#25
aha... kunne godt være jeg skulle ændre det, så...
Synes godt om
Slettet bruger
11. august 2002 - 16:47#26
Husk, at det optimale er kun at bruge én funktion til validering, som kaldes ved onSubmit og returnerer en værdi. Du skal derfor bruge <input type="submit" value="Send"> istedet for <input type="button" value="Send" onClick="valider();">. Det er også en god idé at sende en reference til formularen med i scriptet; det gør kodningen meget nemmere:
<form onSubmit="return valider(this);">
Så kan du fange referencen i funktionen:
function valider(frm)
... og derefter bruge den fx sådan her:
frm.brugernavn.value = "blabla";
Det sparer dig for at skrive document.formNavn hver gang.
Men jeg smutter for i dag! Håber du finder ud af det! :)
Synes godt om
Slettet bruger
11. august 2002 - 16:49#27
ok - tak for hjælpen...
Synes godt om
Slettet bruger
11. august 2002 - 17:22#28
Men der skal vel stå noget "return false" et eller andet sted i scriptet - har lige prøvet at ændre det. Fejlmeddelelsen kommer godt nok men klikke jeg ok - så submitter den formen.
Synes godt om
Slettet bruger
11. august 2002 - 17:25#29
ah ja - selvfølgelig. F*ck det skal rettes mange steder :-)
Nå hej igen
Synes godt om
Slettet bruger
11. august 2002 - 17:27#30
Jeg går ud fra det er sådan:
if (document.bruger.brugernavn.value=="") {alert("Angiv venligst et brugernavn!"); document.bruger.brugernavn.focus(); return false} if (document.bruger.password.value=="") {alert("Angiv venligst et password!"); document.bruger.password.focus(); return false} osv...
Synes godt om
Slettet bruger
12. august 2002 - 15:09#31
Ja, men husk det der med at referere til formen. Det er god programmeringsskik! document.bruger bør ikke blive brugt.
Synes godt om
Slettet bruger
16. august 2002 - 18:41#32
Selvom det nok strider mod din kode-disciplin kan du så lave koden om til at den passer med:
- Der er simpelthen for meget der ellers skal rettes for mig.
Synes godt om
Slettet bruger
17. august 2002 - 12:48#33
Så meget kan det vel umuligt være. Desuden mister brugeren jo muligheden for at trykke enter, hvilket kun kan være dårligt. Men ok, så skal min kode være således:
function valider(frm) { val = frm.fil.value; if (val == "") frm.submit(); end = val.substring(val.lastIndexOf("."), val.length).toLowerCase(); f = false; for (i = 0; i < ft.length; i++) if (ft[i] == end) { f = true; break; } if (!f) alert("Forkert filtype!"); else frm.submit(); }
2) Jeg har prøvet at rettet scriptet i stil med: if (document.bruger.brugernavn.value=="") {alert("Angiv venligst et brugernavn!"); document.bruger.brugernavn.focus(); return false} if (document.bruger.password.value=="") {alert("Angiv venligst et password!"); document.bruger.password.focus(); return false}
men så submitter den - og jeg får f.eks. en ASP fejl at brugernavnet er taget selvom det ikke er tilfældet. Derfor bliver det nu som det er :-)
3) Jeg kan ikke få dit script til at virke - jeg skal ha' det ind mellem:
function validate(){ if (document.bruger.password.value=="") {alert("Angiv venligst et password!"); document.bruger.password.focus(); return}
if (document.bruger.email.value=="") {alert("Angiv venligst en e-mail!"); document.bruger.email.focus(); return} if (!checkmail(document.bruger.email.value)) {alert("Indtast venligst en rigtig e-mail!"), document.bruger.email.focus(); return}
I HTML'en er koden: <form name="bruger" action="processing.asp" method=post onSubmit="return false"> ... <input type="submit" value="Tilføj bruger" onClick=validate()>
Synes godt om
Slettet bruger
19. august 2002 - 16:44#35
Prøv dette:
function validate(){ if (document.bruger.password.value=="") {alert("Angiv venligst et password!"); document.bruger.password.focus(); return}
if (document.bruger.email.value=="") {alert("Angiv venligst en e-mail!"); document.bruger.email.focus(); return} if (!checkmail(document.bruger.email.value)) {alert("Indtast venligst en rigtig e-mail!"), document.bruger.email.focus(); return}
else document.bruger.submit()
frm = document.bruger; val = frm.fil.value; if (val == "") frm.submit(); end = val.substring(val.lastIndexOf("."), val.length).toLowerCase(); f = false; for (i = 0; i < ft.length; i++) if (ft[i] == end) { f = true; break; } if (!f) alert("Forkert filtype!"); else frm.submit(); }
Nu er det blevet noget af en rodekode, men du er selv ude om det! :)
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.