Možnost vymazání adresy z vyplněného upload políčka
- Rypi
- Člen | 38
Ahoj,
v nette mám formulář, kam mohu nepovinně přiložit až 5 obrázků.
$form->addUpload('photo1', 'Fotka1: ');
Problém nastane, pokud uživatel omylem vybere obrázek, který už nechtěl a chtěl by ho vymazat z formuláře, aby se nenahrál. (Vybral 4 obrázky, ale chce nahrát pouze 3). Nette a jeho JS mu nedovolí z INPUT políčka smazat adresu a jediná možnost je celý formulář zrušit a vyplnit ho znovu. Přemýšlel jsem nad přidáním tlačítka „VYMAZAT“ za každé uploadovací pole, ale mnohem raději bych to vyřešil v rámci frameworku, nějakým konfiguračním nastavením. Je to možné? Případně nestálo by za úvahu, jestli něco podobného neimplementovat?
Díky :)
- na1k
- Člen | 288
Pokud je tvůj problém to, co si myslím že je, tak jde o záležitost samotného prohlížeče. Zkus si vytvořit obyčejnou html stránku (žádné Nette, nic) se souborovým inputem – vybraný soubor nepůjde odvybrat ani tam.
Asi by se to dalo řešit javascriptem přes něco jako
element.value = ''
, ale nezkoušel jsem to. V takovém případě
by asi nebylo od věci podědit si control pro file upload a přepsat mu
renderovací metodu tak, aby vykreslil rovnou jako „uploadovací políčko
s vyprazdňovacím tlačítkem“.
- na1k
- Člen | 288
Snad bych jen doporučil použít namísto pevně daného
#frmmistaAddForm-photo1
použít ID získané z konkrétního
controlu, něco jako $control->htmlId
(nebo to bylo
$control->htmlName
? z hlavy si nejsem jistý).
Tím si zajistíš funkčnost i v případě, že později přejmenuješ formulář anebo control, a zapomeneš, že máš v šabloně nějakou vlastní úpravu :-)
- Patrik Votoček
- Člen | 2221
a to $('#frmmistaAddForm-photo1').val('');
ti funguje? Protože
pokud vím tak prohlížeče z bezpečnostních důvodů nedovolují měnit
VALUE u file inputu (aby sis nemohl poslat data jaká chceš).
Smazání by se mělo dát obechcat cca takto:
$file = $('#frmmistaAddForm-photo1');
$file.replaceWith($file.clone());
Netestováno…
- Rypi
- Člen | 38
na1k: díky, to jsem hledal, ale nemohl jsem to najít. (ani dokumentace, ani
API).
Ovšem protože mám v kódu stejně
{$control['mistaAddForm']['photo1']->control}
tak to pomůže snad jen kdyby nette změnilo generovaný string. I tak to ale vyzkouším :)
Patrik: Ano, ve FF to funguje. u ostatních zkusím, kdyžtak použiji tvůj kód :)
//EDIT: Funguje mi to jen v FF a chrome, Opera a IE to bojkotují :D Zkusím pak tu tvou možnost
Editoval Rypi (27. 7. 2011 18:03)