Autor | Zpráva | ||
---|---|---|---|
Eda Profil * |
#1 · Zasláno: 18. 3. 2010, 01:04:01
Zdravím,
řeším teď zajímavý problém: mám PHP skript, který mi generuje formulář o velkém počtu polí. Část těchto polí je skrytá (...type='hidden'...). Při dalším vývoji mi neseděla jedna hodnota u jednoho skrytého (hidden) pole formuláře s tím, co měl generovat skript. V panelu HTML mi Firebug ukazoval "...value="6"..." místo očekávaného "...value="5"...". Pro jistotu jsem tedy kouknul přímo do zdrojového kódu přes Menu Firefoxu a co nevidím. Na sledovaném místě je "...value="5"...". Nj, jenomže co s tím? Zkusil jsem to ještě v Google Chrome 5.0 a Opeře 10 a vše šlo dle očekávání s "...value="5"...". Jak se tedy ta šestka do kódu ve Firefoxu dostala? Zkusil jsem tedy v PHP skriptu vytisknou krom elementu "value" onu "5" i do elementu "value2". Firebug ukázal tohle: "...value="6" value2="5"...". Dále jsem zkusil změnit type elementu z hidden na text, opět to vedle ke chtěné "5". Zkusil jsem také ve Firebugu zadat sledování hodnoty elementu, ihned po vytvoření to je údajně s value "6". Zajímavé je, že při změně "name" elementu se vypsala požadovaná "5". Změna "id" neměla vliv. Další test spočíval v bezprostředním vypsání hodnoty JS alertem ihned po jeho vytvoření (bezprostředně za element jsem vložil <script>window.alert...</script>). Opět nic a i alertek mi vypsal 6. Už opravdu nevím, co mám vyzkoušet, abych vysledoval, jak se tam ta zatracená šestka dostala. Asi to bude nějakým JS, protože při vypnutém JS v prohlížeči se vypíše požadovaná 5. Když jsem ale zkusil oba soubory skriptů, co ke stránce běžně přikládám, nepřiložit, chyba se stále projevovala. V ostatních prohlížečích pořád jen správná a bezchybná "5". Čím to může být?Budu bych rád za každou radu. Zatím to řeším tak, že type nastavím na text a nastyluju input tak, aby nebyl vidět. Není to ale zrovna nejčistší řešení. Hlavně mě ale štve, že vůbec nemůžu přijít na to, kde je chyba, a ani všemožné sledovací nástroje mi nedovedou poradit. Eda |
||
Chamurappi Profil |
#2 · Zasláno: 18. 3. 2010, 01:37:22
Reaguji na Edu:
Vytvořím-li čistou stránku a dám-li do ní skrytý <input> s value="5" , zůstane tam value="5" . Chyba musí být v něčem, co jsi nezmínil, a proto ji teď tady těžko někdo najde.
„Čím to může být?“ Nejsem jasnovidec. 1) Nezmínil jsi verzi Firefoxu, jen verze ostatních prohlížečů. 2) Nezmínil jsi, zda se problém vyskytne i při úplně prvním načtení stránky (při znovunačtení se prohlížeč snaží vyplnit hodnoty, které měl před znovunačtením). 3) Nezmínil jsi, zda se závada projevuje jen ve tvé instalaci, nebo u všech uživatelů. 4) Nezmínil jsi, zda používáš nějaký druh automatického vyplňování formulářů. 5) Nezmínil jsi, zda je problém jen se zobrazením atributu value ve Firebugu, nebo i s odeslanou hodnotou (která je ve vlastnosti value , v tom může být rozdíl).
Takže prosím o odkaz na živou ukázku. |
||
_es Profil |
#3 · Zasláno: 18. 3. 2010, 08:07:27
Eda:
Bez odkazu na problém je ťažko radiť. Možno bude chyba v rozdieloch medzi prehliadačmi popísanými napríklad v tomto príspevku. Niekde v nejakom HTML atribúte asi budeš mať "value = nejaká_hodnota;" , alebo "value++" , alebo sa spoliehaš na automatické vytváranie globálnych objektov podľa name alebo id, ktoré môže byť v rôznych prehliadačoch rôzne.
Alebo nechcene používaš globálnu premennú value. Premiestnenie definície ovládačov mimo HTML atribúty by to celé mohlo vyriešiť. |
||
Eda Profil * |
#4 · Zasláno: 18. 3. 2010, 23:21:38
Děkuji moc za všechny rady. Nakonec jsem díky nim přišel na to, že hodnotu mi modifikuje prohlížeč, když se ji snaží automaticky doplnit, což mě velmi překvapilo, protože u skrytého inputu bych to opravdu nečekal. Doplnil jsem mu tedy "autocomplete='off'" a již to funguje dle očekávání.
Na problém rozdílu atributu "value" a vlastnosti "value" jsem shodou okolností potom narazil také. Díky vám jsem ale už byl připraven a podařilo se mi problém vyřešit. Do včerejška jsem o tom, že stejný atribut a vlastnost mohou mít rozdílnou hodnotu, neměl ponětí, všechno jsem viděl tak nějak zjednodušeně. Škoda, že nikde na netu není souhrnný článek (nebo se mi ho zatím nepodařilo najít) o této problematice. Je to poměrně zajímavé. S pozdravem Eda |
||
Časová prodleva: 14 let
|
0