Autor | Zpráva | ||
---|---|---|---|
joe Profil |
Ahoj, mam jednoduchou otázku, jak nejlépe udělat přidávání dynamických polí do formuláře, pokud mám např. tento formulář:
<form> <div class="person"> <input name="name[1]" type="text"> <input name="surname[1]" type="text"> </div> </form> <button onclick="addPerson()">Přidat osobu</button> chci umožnit duplikovat a odstraňovat osoby, můžu: 1. Naklonovat poslední div.person a vložit ho pod něj, jak ale vyřešit názvy inputů, aby nedocházelo k možným kolizím?
2. Místo jmen name[1] použít jem name[] , ale problém vzniká, pokud ten samý formulář chci použít pro editaci, nebudu mít možnost rozeznat, které položky k čemu patří.
3. Použít šablonovací systém v JS, tím mi ale vznikají šablony dvě - jedna pro klasický výpis (generovaná) a druhá pro JavaScript - a to není moc dobře udržovatelné. Možná je řešení, o kterém nevím (?) Zkrátka co byste poradili :-) Díky |
||
mimiru Profil * |
#2 · Zasláno: 11. 11. 2012, 09:00:39
joe:
2. Místo jmen name[1] použít jem name[], ale problém vzniká, pokud ten samý formulář chci použít pro editaci, nebudu mít možnost rozeznat, které položky k čemu patří. při ukládání prostě smažeš (a vytvoříš) / přepíšeš všechny záznamy. 3. Použít šablonovací systém v JS, tím mi ale vznikají šablony dvě - jedna pro klasický výpis (generovaná) a druhá pro JavaScript pokud aplikace nemusí být funkční bez js tak je řešením i první formulář vytvořit pomocí js. pak máš jen js šablonu. |
||
Kajman Profil |
#3 · Zasláno: 11. 11. 2012, 11:39:34
joe:
„2.“ Do hidden inputu lze dát původní klíč. Jen by se po kopírování musela hodnota skrytého vstupu smazat. |
||
joe Profil |
#4 · Zasláno: 11. 11. 2012, 13:26:54
Kajman:
Už jsem kolikrát slyšel, že návzy v HTML pro pole by měla vždycky obsahovat nějaké indexy, takže name[1] , name[2] , bez nich by to prý být nemělo, ještě jsem nepřišel na to proč.
„Do hidden inputu lze dát původní klíč.“ Dá se to, ale při další manipulaci s prvky DOMu se může stát, že se zapomenou hidden inputy přesunout, chyba se ukazovat nikde nebude a výstupem budou jiné hodnoty pro jiný index. mimiru: „pokud aplikace nemusí být funkční bez js“ ... to by měla být, pokud se bavíme čistě o stránkách a ne webových aplikací, bylo by dobré, kdyby se přinejmenším jedna ta osoba (podle příkladu) zobrazila, takže tady by mi šablonovací systém akorát ztěžoval práci. „prostě smažeš (a vytvoříš)“ To se mi zdá zbytečné, proč bych měl něco, co už existuje mazat a vytvářet to znovu, jen proto, že změním nějakou hodnotu. |
||
Str4wberry Profil |
#5 · Zasláno: 11. 11. 2012, 15:13:46
Reakce na joa:
„Už jsem kolikrát slyšel, že návzy v HTML pro pole by měla vždycky obsahovat nějaké indexy, takže name[1], name[2], bez nich by to prý být nemělo, ještě jsem nepřišel na to proč.“ To se mi moc nezdá. Z pohledu HTML to žádné pole a indexy nejsou. „nebudu mít možnost rozeznat, které položky k čemu patří“ Položky se vypisují dle nějakého pořadí, podle stejného pořadí by je mohlo jít dát dohromady. „při další manipulaci s prvky DOMu se může stát, že se zapomenou hidden inputy přesunout“ Jak to myslíš? Pokud to napíšeš dobře, tak se snad sami od sebe zapomenout nemohou, ne? Moc nerozumím, kde máš problém. Nebo mi něco uniká. Šablona (část) bude: <div class="person"> <input name="name[<% ID %>]" value="<% name %>" type="text"> <input name="surname[<% ID %>]" value="<% surname %>" type="text"> </div> 1) Bude-li se šablona používat pro editaci, vypíší se na místě <% proměnných %> příslušně hodnoty.
2) Bude-li se šablona používat pro vložení záznamu, nevypíše se na příslušných místech nic. |
||
joe Profil |
Str4wberry:
„Položky se vypisují dle nějakého pořadí, podle stejného pořadí by je mohlo jít dát dohromady.“ Pokud bude možnost položky odebírat, tak pokud se vypíšou tři položky a prostřední odeberu, byl by problém - položky by se odeslaly v jiném pořadí, než ve kterém přišly „Jak to myslíš? Pokud to napíšeš dobře, tak se snad sami od sebe zapomenout nemohou, ne?“ To máš pravdu :-) ale hledám nějaké komplexní řešení, osobně problém nemám. K takto očíslovaným názvům se mi zdá, že je daleko lepší přístup (snadnější) na serveru. „Šablona (část) bude:“ Sám jsem z toho zmatenej :-) nevím jestli to je to, co jsi mi radil, ale došla mi jednoduchá a geniální myšlenka - poslední osoba bude vždy s nevyplněnýma hodnotama a to bude právě ta, která se duplikuje a nejlepší je to, že to bude fungovat i v případě vypnutého JS. Problém ovšem je s frameworky (Nette), které mi takovou strukturu asi nepovolí. „Bude-li se šablona používat pro editaci“ Třeba a já bych i u editace chtěl mít tlačítko "Přidat další osobu", jak bych se pak zbavil těch čísel v hranatých závorkách? |
||
Časová prodleva: 11 let
|
0