Avatar billede omansf Nybegynder
04. juni 2003 - 09:05 Der er 10 kommentarer

Håndtering af input type=file

Jeg vil gerne slette den viste sti i en <input type=file> hvis den valgte fil ikke ønskes uploaded. lige nu gør jeg således uden held:

function validateFile(obj){
    foundFile = obj.value.substr(obj.value.lastIndexOf(".")+1);
    if (foundFile != obj.name){
    obj.value = "";
    alert("Der er valgt en forkert filtype. Vælg kun filer af typen " + obj.name);
    }
}
Avatar billede omansf Nybegynder
04. juni 2003 - 09:07 #1
PS: Jeg får godt nok at vide at den valgte fil er af den forkerte type:)
Avatar billede Slettet bruger
04. juni 2003 - 09:17 #2
Giver du feltet navn efter den filtype, der skal godtages?
Fx:

<input type="file" name="gif">

I øvrigt bør du gøre således:

foundFile = obj.value.substr(obj.value.lastIndexOf(".")+1).toLowerCase();

Og husk lige, at det er en meget dum idé at tjekke filtyper med JavaScript. Det bør gøres med et serverside sprog.
Avatar billede omansf Nybegynder
04. juni 2003 - 09:22 #3
øh ja måske men brugeren kan da få en tilbagemelding med det samme vedr valg af filtype ik?!? Tak for rådet men det er ikke lige det jeg gerne vil vide noget om... Hvis du ved hvordan man med javascript ændre i det viste indhold af <input type=file> så blir jeg glad!
Avatar billede Slettet bruger
04. juni 2003 - 09:36 #4
Det var vel også lige det, jeg gjorde?
Under alle omstændigheder virker dette:

<html>
<head>
<script>
function tjek(obj) {
  temp = obj.value.split(".");
  ft = temp[temp.length - 1].toLowerCase();
  if (ft != obj.name) {
    alert("Bla!");
    obj.value = "";
  }
}
</script>
</head>
<body>
<form>
<input type="file" name="gif" onChange="tjek(this);">
</form>
</body>
</html>
Avatar billede Slettet bruger
04. juni 2003 - 09:37 #5
Næ, sorry, den tømmer jo ikke feltet ved fejl... 2 sek.
Avatar billede Slettet bruger
04. juni 2003 - 09:39 #6
Du må bruge el_barto's workaround her:
http://www.eksperten.dk/spm/322503
Avatar billede olebole Juniormester
08. juni 2003 - 15:48 #7
<ole>

Der er af sikkerhedsgrunde ikke mulighed for at ændre på indholdet af en type="file" via JavaScript (og lad os alle være lykkelige for det). Men du kunne bruge en:
  document.FORMNAVN.reset();
Det ville være en betydelig bedre og kønnere løsning end el_barto's (som vist i Eksperten-sammenhænge oprindelig er min ... hehe)

/mvh
</bole>
Avatar billede omansf Nybegynder
09. juni 2003 - 00:18 #8
kan man resette en enkelt type="file". Jeg har to på siden og det vil ikke være så pænt af mig at slette den anden hvis den er ok...
Har du nogen forslag til det? Inden el_barto sender mig en af dine tidligere ;)
Avatar billede olebole Juniormester
09. juni 2003 - 01:15 #9
Tjaahhh ... du kunne jo gøre sådan noget lignende:

<html>
<head>
<script type="text/JavaScript">
var d=document;
function checkNsend(f) {
    var tF = d.f1;
    foundFile = tF.fil.value.split(".")[1];
    if (foundFile != "gif"){
        alert("Der er valgt en forkert filtype. Vælg kun filer af typen " + obj.name);
        tF.reset();
    } else {
        tF.foo.value = f.foo_tmp.value;
        tF.bar.value = f.bar_tmp.value;
        tF.submit();
    }
}

</script>
</head>
<body>

<form name="f1" action="side.php" method="post">
  <input type="hidden" name="foo">
  <input type="hidden" name="bar">
  <input type="file" name="gif">
</form>

<form name="f2" onsubmit="return false">
  <input type="text" name="foo_tmp"><br>
  <input type="text" name="bar_tmp"><br>
  <button onclick="checkNsend(this.form)">Send</button>
</form>

</body>
</html>

/mvh
Avatar billede olebole Juniormester
09. juni 2003 - 01:18 #10
Eehhh ... 'obj.name' i alert'en skal selvfølgelig ikke stå der  ;o)
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