O webu
Reset políčka pro nahrávání souboru

Z bezpečnostních důvodů platí pro uploadovací formulářové políčko trochu jiná pravidla.

Například není možné přistupovat JavaScriptem k jeho hodnotě ve stejné míře jako u jiných políček.

  • Přenastavení hodnoty uploadInput.value = "něco" selže.
  • Přečtení hodnoty alert(uploadInput.value) vrátí ve Firefoxu jen název souboru a v jiných prohlížečích smyšlenou cestu: C:\fakepath\nazev-souboru.txt.

Je to docela pochopitelné, protože jinak by si majitel stránky mohl nahrávat libovolné soubory z disku návštěvníka tipováním jejich cest.

Má to ale jednu nevýhodu v případě, že chceme nahrávací <input> vymazat, tj. nastavit value na "".

  1. Jedna možnost je použít běžné resetovací tlačítko (např. <input type=reset>) — to ale vymaže celý formulář.
  2. Naštěstí existuje ještě jedna možnost — přepsat JavaScriptem obsah políčka tím samým obsahem.
<span id=obal><input name=upload type=file></span>
<button onclick='document.getElementById("obal").innerHTML = document.getElementById("obal").innerHTML'>
  Odstranit
</button>

Živá ukázka

U javascriptového resetovacího tlačítka je nutno dát pozor na to, aby nechtěně neodesílalo formulář. Tomu zabrání buď return false, nebo tlačítko, co formulář neodešle, což je <input> nebo <button> s type=button.

Hodnota <input type=file>