Avatar billede hermandsen Juniormester
22. april 2004 - 10:18 Der er 16 kommentarer og
1 løsning

Hent '<input type="file">.value' i Internet Explorer og Opera

Hej Eksperter!

Jeg har gang i et system som bl.a. skal generere winamp-playlists. For at gøre det let for brugeren at tilføje en fil bruger jeg <input type="file">, så bruger kan vælge en fil på sin harddisk, uden at skulle skrive hele stien eller klippe/klistre navnet.

Til formålet benytter jeg et JavaScript som overfører værdien fra file-input'et til et hidden-input. Hvis ikke det blev gjort ville jeg blot få filens navn, og ikke hele stien, hvilket er nødvendigt i dette tilfælde.

Følgende virker fint i Firefox, men giver "undefined" i Internet Explorer og Opera...

/* Venligst lånt fra Eksperten.dk */
function get_id ($id) {
    if (document.all && document.getElementById) {
        return document.all($id);
    } else if (!document.all && document.getElementById) {
        return document.getElementById($id);
    } else {
        return false;
    }
}


function fullpath () {
    $fil = get_id('fil');
    $hiddenfil = get_id('hiddenfil');
    $hiddenfil.value = $fil.value;
}

<form action="save.php" method="post" onsubmit="fullpath();">
  Fil: <input id="fil" type="file" />
  <input type="hidden" name="fil" id="hiddenfil" />
  <input type="submit" value="Tilføj" />
</form>

Har lavet et mindre eksempel på http://hermandsen.homepage.dk/exp/inputfile.html

//hermandsen
Avatar billede grunken Nybegynder
22. april 2004 - 12:15 #1
undrer mig lidt over at du ikke bruger de gode gamle forms metoder til at hente værdier i felter der ligger i en form :o)
function fullpath kunne derved barberes ned til ingenting

function fullpath () {
    document.frm.hiddenfil.value = document.fil.value;
}

<form name="frm" action="save.php" method="post" onsubmit="fullpath();">
  Fil: <input name="fil" id="fil" type="file" />
  <input type="hidden" name="hiddenfil" id="hiddenfil" />
  <input type="submit" value="Tilføj" />
</form>

Hvis du mener at det andet er en bedre indgangsvinkel, eksempelvis fordi du vil undgå overflødige names i din form !

function fullpath () {
    fn = document.getElementById('fil');
    hf = document.getElementById('hiddenfil');
    hf.value = fn.value;
}

Og for din egen skyld så undgå at lave php alike variabler i javascript :o)

men begge ovenstående metoder burde virke fint, alt efter hvad dit temperement er til :o)
Avatar billede grunken Nybegynder
22. april 2004 - 12:16 #2
upz :o)

korrigerer lige version 0.001 af "fullpath";

function fullpath () {
    document.frm.hiddenfil.value = document.frm.fil.value;
}

:o)
Avatar billede roenving Novice
22. april 2004 - 12:22 #3
-- og hvis det er for at undgå en name-attribut, kan man jo:

document.forms[0]
Avatar billede hermandsen Juniormester
22. april 2004 - 12:30 #4
Jaaaaaah!!!!!
Problemet er løst!! :)

Tak tak tak tak tak tak!!!!!!!

Har opdateret eksemplet på ovenstående link!!

Smid lige nogle svar!! :)

Det skal siges at jeg er noget af en nybegynder i JavaScript, men endnu en gang 1000 tak for hjælpen!! :)))

Jeg bliver snart anmeldt for overdrevet brug af smilies, hvis jeg ikke snart jeg trykker Send!! :)

Endnu en gang 1000 tak!! :)
Avatar billede hermandsen Juniormester
22. april 2004 - 12:32 #5
Tror at den blev forvirret over at der både var en id-attribut og en name-attribut med indholdet "fil"!!
Avatar billede roenving Novice
22. april 2004 - 12:41 #6
Ja, det lyder sandsynligt, for alle elementer i IE/Opera har en .all-collection, som refereres med id, men .all er det tilladt at udelade, så form.feltnavn har ikke været til at skelne fra form.all.feltid ...
Avatar billede grunken Nybegynder
22. april 2004 - 12:45 #7
Så smider jeg da et svar :o)

Og følger op på dine smileys, så vi kan stå sammen når vi nu bliver anmeldt :o) :o)
Avatar billede grunken Nybegynder
22. april 2004 - 12:46 #8
:o)
Avatar billede grunken Nybegynder
22. april 2004 - 12:48 #9
sorry for spam opretter Hermandsen

roenving >> forresten er admin underrettet  om at eksperten er et rent reklameH****** set i browsere uden popupblockers?

Men forresten, så undgår man jo også nye brugere :o)
Avatar billede hermandsen Juniormester
22. april 2004 - 12:50 #10
>>roenving
Vil du også ha' lidt?? Jeg slap jo for name-elementet i min form pga. dig!! ;)

>>grunken
Bare i orden!
Avatar billede grunken Nybegynder
22. april 2004 - 12:54 #11
roenving skal da have points :o)
Avatar billede roenving Novice
22. april 2004 - 12:55 #12
Der var en tråd for nogle måneder siden, hvor Jesper Haun oplyste, at der var en periodisk fejl med deres popup-maskine, så der ikke kun kom popups een gang pr. besøg, så det er ikke ubekendt for d'herrer på ledergangene i Valby !-)
Avatar billede roenving Novice
22. april 2004 - 12:56 #13
Næh, skal jeg ej, skal jeg ej !-)
Avatar billede hermandsen Juniormester
22. april 2004 - 12:58 #14
Joooooooh, bare lidt!! :)
Avatar billede grunken Nybegynder
22. april 2004 - 13:02 #15
roenving - jeg sir til dig at det er organiseret gruppepres :o)
Avatar billede hermandsen Juniormester
22. april 2004 - 14:28 #16
Hmmmm... Det er vel dit valg!! :)
Sig til hvis du fortryder... ;)
Avatar billede roenving Novice
22. april 2004 - 14:34 #17
*g*
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging