Avatar billede Slettet bruger
11. august 2002 - 13:01 Der 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"...
Avatar billede cablenet.dk Nybegynder
11. august 2002 - 13:05 #1
<%
If Right(Request("navn"),3) = "jpg" then
response.write "Godkendt"
Else
response.write "Fejl"
End if

If Right(Request("navn"),4) = "jpeg" then
response.write "Godkendt"
Else
response.write "Fejl"
End if
%>

Kan du bruge det....?
Avatar billede Slettet bruger
11. august 2002 - 13:09 #2
ikke rigtigt - det er javascript-validering jeg ønsker
Avatar billede Slettet bruger
11. august 2002 - 14:58 #3
Avatar billede Slettet bruger
11. august 2002 - 15:51 #4
phoenixv > den melder nu ikke fejl ved alle fil-typer. Prøv f.eks. at vælg en HTML-fil.
Avatar billede Slettet bruger
11. august 2002 - 15:53 #5
2 sek.
Avatar billede Slettet bruger
11. august 2002 - 15:57 #6
Jo, det gør da! Både ved .html og .htm!
Man må bare ikke selv ændre på filens endelse manuelt.
Avatar billede Slettet bruger
11. august 2002 - 15:58 #7
Indsæt dette ved din input file:

<input type="file" name="fil" readonly>

Så kan man ikke selv ændre på teksten i boksen; man skal bruge Gennemse-knappen!
Avatar billede Slettet bruger
11. august 2002 - 15:59 #8
ja ja - det er ikke problemet. Prøv dit script på http://www.friserverplads.dk/phoenixv/file_vali.html og forsøg at upload f.eks. en HTML-fil. Så får man ikke nogen fejlmeddelelse.
Avatar billede Slettet bruger
11. august 2002 - 16:00 #9
ah - det kan være at det er fordi hvis man først klikker og så prøver igen...
Avatar billede Slettet bruger
11. august 2002 - 16:02 #10
Næ, du har ret; det virker ikke med .htm-filer...
Jeg prøver igen! :)
Avatar billede 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.
Avatar billede Slettet bruger
11. august 2002 - 16:03 #12
jo - den virker med htm - men ikke hvis man klikker flere gange. mærkeligt.
Avatar billede 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...
Avatar billede Slettet bruger
11. august 2002 - 16:09 #14
Nu er det uploadet på den samme url.
Avatar billede 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);"

?
Avatar billede 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!
Avatar billede Slettet bruger
11. august 2002 - 16:16 #17
1'eren er rettet nu.
Avatar billede 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 ?!
Avatar billede 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!
Avatar billede Slettet bruger
11. august 2002 - 16:26 #20
Jamen et eksempel:

<form name="bruger" action="noget.asp" method=post onSubmit="return false">
<input type="text" name="brugernavn">
<input type="submit" value="Tilføj bruger" onClick=validate()>

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()
}
Avatar billede Slettet bruger
11. august 2002 - 16:26 #21
virker fint
Avatar billede 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!
Avatar billede 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!
Avatar billede Slettet bruger
11. august 2002 - 16:33 #24
Altså med dit script! :)
Avatar billede Slettet bruger
11. august 2002 - 16:42 #25
aha... kunne godt være jeg skulle ændre det, så...
Avatar billede 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! :)
Avatar billede Slettet bruger
11. august 2002 - 16:49 #27
ok - tak for hjælpen...
Avatar billede 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.
Avatar billede Slettet bruger
11. august 2002 - 17:25 #29
ah ja - selvfølgelig. F*ck det skal rettes mange steder :-)

Nå hej igen
Avatar billede 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...
Avatar billede 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.
Avatar billede 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:

<form name="bruger" action="noget.asp" method=post onSubmit="return false">
<input type="text" name="brugernavn">
<input type="submit" value="Tilføj bruger" onClick=validate()>

- Der er simpelthen for meget der ellers skal rettes for mig.
Avatar billede 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();
}

Validér-funktionen skal så kaldes således:

<input type="button" value="Tilføj bruger" onClick="valider(this.form);">
Avatar billede Slettet bruger
17. august 2002 - 15:40 #34
1) Enter virker altså fint nok.

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}

else document.bruger.submit()
}
function checkmail(Email){
sted=Email.indexOf("@") , punkt=Email.indexOf(".") , tal=punkt-sted
if (Email=="" || sted<=0 || punkt==-1 || tal<2) return false
return true
}

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()>
Avatar billede 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! :)
Avatar billede Slettet bruger
20. august 2002 - 08:37 #36
Well - det virker nu stadig ikke... :-)

"Et objekt var ventet"

Fejl-linie:
<input type="submit" value="Ret profil" onClick=validate()>
Avatar billede Slettet bruger
20. august 2002 - 14:12 #37
Smid et link.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester