Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 31. 10. 2008, 19:56:14
Ahoj,
mohl by mi někdo vysvětlit, proč bych neměl používat kód <input type="submit" name="submit" /> Díky |
||
Měsíček Profil |
#2 · Zasláno: 31. 10. 2008, 20:04:35
Dobrá otázka .. nehraje v tom roli třeba tato funkce addEventListener()? Když přejímá místo události onSubmit pouze "submit"?
|
||
habendorf Profil |
#3 · Zasláno: 31. 10. 2008, 20:05:03
Submit je klíčové slovo JS.
|
||
habendorf Profil |
#4 · Zasláno: 31. 10. 2008, 20:07:48
|
||
joe Profil |
#5 · Zasláno: 31. 10. 2008, 20:08:45 · Upravil/a: joe
habendorf
No i když je (nenašel jsem to, nevím pod čím přesně to najít, pokaždý mi to vyhodí plno stránek s inputem submit a nějakým kusem JS), tak co to má společného s JavaScriptem? To jméno je zadané v HTML... EDIT: už vidím odkaz:-) |
||
Chamurappi Profil |
#6 · Zasláno: 31. 10. 2008, 20:11:07
Reaguji na habendorfa:
Není to přímo klíčové slovo, jen je v tomto případě v kolizi element se stejnojmennou metodou. |
||
joe Profil |
#7 · Zasláno: 31. 10. 2008, 20:11:22
habendorf
No dobře, tak je to funkce na odeslání formuláře, ale nechápu jak by se to s tím mohlo zaměnit. To je jako kdyby někdo říkal, že input nemůže být typu "submit", protože submit je klíčové slovo v JS... Nějak nechápu jak to s tím souvisí, jméno submit pro odesílací tlačítko se celkem často používá - a i já to používám a nikdy jsem neměl problém. |
||
Chamurappi Profil |
#8 · Zasláno: 31. 10. 2008, 20:17:43
Reaguji na joa:
Reference na formulářové prvky se navěšují na objekt formuláře. Když máš třeba <input name="joe">, tak k němu můžeš přistupovat přes „formulář.joe“. |
||
joe Profil |
#9 · Zasláno: 31. 10. 2008, 20:25:00 · Upravil/a: joe
Chamurappi
Dobře, ale to mi nezakazuje použít pro jméno prvku "submit", protože následující kód funguje normálně. <form onsubmit="alert(this.submit.value); return false"> <input name="submit" type="submit" value="Send"> </form> |
||
Chamurappi Profil |
#10 · Zasláno: 31. 10. 2008, 20:28:39 · Upravil/a: Chamurappi
Reaguji na joa:
Ano, funguje, ale kdybys chtěl tento formulář odeslat metodou submit(), nemáš už šanci, protože this.submit je ten <input>. Proto zřejmě Nette preventivně prská. „Pro odeslání tam chybí ()“ To přeci nehraje roli. Proměnná formulář.submit obsahuje běžně nativní funkci prohlížeče, která se — pokud se volá — píše se závorkami. A tvůj <input> ji přeplácne. |
||
joe Profil |
#11 · Zasláno: 31. 10. 2008, 20:37:55
Chamurappi
„kdybys chtěl tento formulář odeslat metodou submit(), nemáš už šanci“ Ale mám, stačí to upravit na this.submit(); return false „To přeci nehraje roli.“ Hraje, protože pokud nenapíšu závvorky () bude se jednat o prvek a pokud závorky použiju, jedná se o funkci k odeslání formuláře... Proto pokud upravím onsubmit na hodnotu viz. výš, tak vše fungovat bude. |
||
Chamurappi Profil |
#12 · Zasláno: 31. 10. 2008, 21:05:28
Reaguji na joa:
Špatně testuješ. Volání this.submit() vyvolá chybu (protože this.submit je opravdu <input> a ne funkce), takže se neprovede „return false“ a formulář se odešle. „Hraje, protože pokud nenapíšu závvorky () bude se jednat o prvek a pokud závorky použiju, jedná se o funkci“ Závorky nikdy nemůžou ovlivňovat význam toho, za čím stojí. Metody a vlastnosti objektů sdílí ten samý prostor názvů. |
||
joe Profil |
#13 · Zasláno: 31. 10. 2008, 21:40:50
Chamurappi
Chyba, tak to mi nedošlo. Už vim, že nemá cenu se "hádat" s takovým odborníkem na JS, díky za vysvětlení. |
||
Chamurappi Profil |
#14 · Zasláno: 1. 11. 2008, 00:45:08
Reaguji na joa:
Klidně se hádej, v #11 jsi nalíčil vynikající chyták a mé chápání JavaScriptu se na pár minut otřáslo v základech, než mi docvaklo, v čem je háček :-) Děkuji. |
||
joe Profil |
#15 · Zasláno: 1. 11. 2008, 23:18:36
Chamurappi
Já se snažim nikdy nehádat a říkat jenom pravdu, v tomhle mě JS zradil, nemám rád JS, už třeba kvůli tomuhle případu jak jsem napsal, kdyby se zastavil a ukázal chybu, to by bylo něco jinýho... :-) |
||
Časová prodleva: 15 let
|
0