Avatar billede k-asp-er Nybegynder
31. august 2008 - 11:34 Der er 5 kommentarer og
1 løsning

Validering af billed-upload felt

Jeg har denne kode til validering

<script language="javascript">
function validerFil(fil){
    reg = /\.jp[e]?g$/gi;
    if(!fil.value.match(reg)){
        alert('Kun billeder af typen JPG/JPEG kan anvendes.\nVælg venligst et sådant.\n                  ');fil.focus();fil.select();return false;
    }else return true;
}
</script>

og så feltet, der skal valideres:
<INPUT type="file" name="billede" onchange="validerFil(this)">


Når der vælges en forkert fil, og man har klikket OK på ved alert, sættes focus på feltet, men den valgte sti til den forkerte fil bliver stadig stående.

Og så spørgsmålet:
Kan man tilføje noget til scriptet, der rydder feltet?

Mvh.
K-asp-er
Avatar billede k-asp-er Nybegynder
31. august 2008 - 11:38 #1
jeg kan erstatte  fil.focus();fil.select();  med location.reload();  men så ryger indholdet i de øvrige felter også - der må være noget smartere.
Avatar billede w13 Novice
31. august 2008 - 11:41 #2
"men den valgte sti til den forkerte fil bliver stadig stående" - hvad skulle der ellers ske? Jeg synes ikke jeg ser, der burde ske andet i koden.

Og pga. sikkerhed kan du ikke ændre value på feltet med JavaScript i Internet Explorer, dvs. du kan ikke rydde feltet.

Men hvis du bruger:

<script language="javascript">
function validerFil(fil){
    reg = /\.jp[e]?g$/gi;
    if(!fil.value.match(reg)){
        alert('Kun billeder af typen JPG/JPEG kan anvendes.\nVælg venligst et sådant.\n                  ');
        fil.focus();
        fil.select();
        fil.value="";
        return false;
    }else return true;
}
</script>

<input type="file" name="billede" onchange="validerFil(this)">

bliver feltet nulstillet i bl.a. FireFox og forskellige andre browsere.

Bemærk også at jeg har skrevet "input" med små bogstaver, så du vil have lettere ved at skifte til XHTML 2.0, når det udkommer. Dér skal tags nemlig være med små bogstaver.
Avatar billede w13 Novice
31. august 2008 - 11:45 #3
Men det kan åbenbart lade sig gøre, hvis man fjerner feltet og indsætter det igen. =)

Gør sådan her:

<script language="javascript">
function validerFil(fil){
    reg = /\.jp[e]?g$/gi;
    if(!fil.value.match(reg)){
        alert('Kun billeder af typen JPG/JPEG kan anvendes.\nVælg venligst et sådant.\n                  ');
        var fil2=fil.cloneNode(false);
        fil.parentNode.insertBefore(fil2,fil);
        fil.parentNode.removeChild(fil);
        fil2.focus();
        return false;
    }else return true;
}
</script>

<input type="file" name="billede" onchange="validerFil(this)">
Avatar billede k-asp-er Nybegynder
31. august 2008 - 12:21 #4
Mange 1000 tak
Avatar billede k-asp-er Nybegynder
31. august 2008 - 12:26 #5
kender du også en kodesnas, der kunne forhindre upload af filer på mere end 100KB?
Eller skal jeg stadig anvende kode på serversiden??
Avatar billede w13 Novice
31. august 2008 - 13:23 #6
Det kan ikke gøres med JavaScript, så ja, du skal ud i noget ServerSide.

(Husk også på, at al JavaScript kan omgåes, så hvis du ikke tester ServerSide, kan man sagtens uploade andet end JPG-filer - det er lige meget, hvad du tester på med JavaScript, det kan bare slåes fra.)

Og tak for point! :)
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