[Javascript] submit reset file input

Pagina: 1
Acties:
  • 3.069 views sinds 30-01-2008
  • Reageer

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Ik ben bezig met een pagina die automatisch de file input opent. Hiervoor heb ik een simpele pagina gemaakt met een formulier waar een file input opzit. Deze file input heeft een onfocus welke de file browser opent. Als de pagina geladen word, word de focus op de file input gezet waarna deze dus geopend word.
de code ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<body onload="setFocusFile();">
    <form name="postform" method="post" ENCTYPE="multipart/form-data">
        <input type="file" id="upload" name="uploadfile" onfocus="openFileBrowser(this)" /><br />
        <input type="submit" name="submit" value="Verstuur" onclick="submitform();">
    </form>
    <script type="text/javascript">
    function setFocusFile()
    {
        if (document.getElementById)
        {
            document.getElementById('upload').focus()
        } 
        else 
        {
            document.forms['postform'].elements['uploadfile'].focus()
        }
    }

    function openFileBrowser(up)
    {
        if (document.getElementById)
        {
            var id = up.id;
            document.getElementById(id).click();
        }
        else 
        {
            up.click();
        }
    }
    </script>
</body>


Tot zover werkt het en heb ik geen problemen. Maar zodra ik het formulier ga versturen springt de filebox leeg en krijg ik weer de file browser te zien. Dit probleem krijg ik niet als ik zelf gewoon op de browse knop klik.

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 07-05 18:41

me1299

$ondertitel

Hou er ook rekening mee dat gebruikers met Service Pack2 een waarschuwing krijgen mbt veiligheidsrestricties.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:08

crisp

Devver

Pixelated

Bedenk ook dat het sowieso IE-only is aangezien andere browsers geen click() method ondersteunen voor file-inputs (in ieder geval Moz/FF niet).
Verder snap ik niet waarom je niet gewoon:
code:
1
onfocus="this.click()"

gebruikt, maar in plaats daarvan moeilijk doet met ID ophalen, en vervolgens weer je element opzoeken.

Verder ben ik heel benieuwd naar de functie submitform() en waarom deze in de onclick handler staat van je submitbutton in plaats van in de onsubmit handler van je form ;)

[ Voor 8% gewijzigd door crisp op 13-04-2005 13:58 ]

Intentionally left blank


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
crisp schreef op woensdag 13 april 2005 @ 13:57:
Bedenk ook dat het sowieso IE-only is aangezien andere browsers geen click() method ondersteunen voor file-inputs (in ieder geval Moz/FF niet).
Daar was ik al van op de hoogte, maar dat is verder geen probleem
Verder snap ik niet waarom je niet gewoon:
code:
1
onfocus="this.click()"

gebruikt, maar in plaats daarvan moeilijk doet met ID ophalen, en vervolgens weer je element opzoeken.
Ik had ergens anders gezien dat je dit het best zo kan doen ivm compatibiliteit van andere browsers. Maar aangezien die toch niet de click(); methode ondersteunen kan het inderdaad misschien ook handiger zo.
Verder ben ik heel benieuwd naar de functie submitform() en waarom deze in de onclick handler staat van je submitbutton in plaats van in de onsubmit handler van je form ;)
de functie submitform() ziet er zo uit
code:
1
2
3
4
function submitform()
{
    document.forms['any_post'].submit();
}

Deze had ik even toegevoegd om een alertje er in te zetten om de waarde van de file input te controleren.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:08

crisp

Devver

Pixelated

je form heet 'postform', dus je submit hiermee blijkbaar een ander form?

Intentionally left blank


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
crisp schreef op woensdag 13 april 2005 @ 14:04:
je form heet 'postform', dus je submit hiermee blijkbaar een ander form?
Sorry kopieer foutje. Dit is natuurlijk:

code:
1
2
3
4
function submitform()
{
    document.forms['postform'].submit();
}

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:08

crisp

Devver

Pixelated

Maar waarom per-sé met javascript submitten? Die submitbutton doet z'n werk wel hoor zonder javascript...

Intentionally left blank


  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Oke ik heb dat stukje er uit gehaald. Maar dit maakt verder niets uit.
Pagina: 1