Autor Zpráva
Jisp
Profil
Jednoduchý prvek SELECT - například:
<select>
        <option>A</option>
        <option>B</option>
        <option>C</option>
</select> 
by měl po jakémkoliv předchozím výběru ("B", "C") kliknutím na RELOAD (nebo F5 nebo "Aktualizovat) zobrazit první volbu - tedy "A". (Můžete do prvního "option" přidat atribut "selected", ale nemá to praktický vliv.) Je tomu tak v Chrome, Firefoxu a IE 6. Počínaje verzí 7 IE se to však neděje a zobrazuje se vždy poslední volba (před reloadem).
Nepomůže ani javascriptový příkaz (...select[0].selectedIndex = 0) - nebo pomůže, ale jen po dobu běhu programu. To lze vidět, pokud na konec stránky vložíte příkaz hlášky:
<script>alert("AHA")</script>
, která pozdrží stav před ukončením.
Postup:
- vyberte v selectu volbu "B" nebo "C"
- dejte povel RELOAD v prohlížeči IE verze 8 ÷ 11
- selekt zobrazí volbu "A" a současně vyskočí hláška "AHA"
- po odkliknutí hlášky naskočí původně vybraná volba ("B" nebo "C").

Ve složitějších formulářích s funkčními vazbami mezi prvky SELECT způsobí reload v aktuálních IE pravou paseku. Nabídne někdo řešení?
_es
Profil
Prosím o odkaz na živou ukázku. Asi ti tam robí komplikácie nejaký JS. Vyskúšaj to s vypnutým JS. V IE8 mi nasledujúci ukážka žiadne problémy nerobí: http://kod.djpw.cz/tnnb-
Jisp
Profil
_es:
Je to zvláštní:
- Tvůj odkaz v mém IE 11 skutečně funguje
- umístil jsem soubor s Tvým kódem na můj web - http://www.etatherm.cz/test/tvuj.htm
- v mém IE 11 nefunguje
- můj soubor, který rovněž nefunguje v IE 11 je na http://www.etatherm.cz/test/muj.htm- oba soubory bez problémů fungují v Chrome (ale již nikoliv ve Firefoxu 36.0.1)
- odkaz na soubor s alertovou hláškou: http://www.etatherm.cz/test/muj_2.htm
Joker
Profil
Jisp:
Přesněji řečeno IE při obnovení stránky zachová hodnoty všech formulářových polí. Když tam bude textový input, hodnota se zachová taky.

Neřekl bych, že by hodnoty měl smazat, resp. že to chování je chybné. Resp. asi na to neexistuje nějaká specifikace, takže ten prohlížeč se prostě tak chová.

_es:
V IE8 mi nasledujúci ukážka žiadne problémy nerobí

Nejspíš to ovlivní nějaká hlavička, tipoval bych expires.
Totožný kód mi lokálně funguje tak, jak píše Jisp, zatímco na kod.djpw.cz (který posílá ty hlavičky) se data neuchovají.
_es
Profil
Jisp:
Skús spraviť formulár tak, aby bol „plnohodnotný“, aby mal odosielacie tlačítko, aby mali optiony atribút value... Možno to však nepomôže. Hodnotu zresetuje CTRL + Reload.

Joker:
Nejspíš to ovlivní nějaká hlavička, tipoval bych expires.
To by možno mohlo byť riešenie Jispovho problému.

Neřekl bych, že by hodnoty měl smazat, resp. že to chování je chybné.
Ak sa na stránku návštevník dostane tlačítkom „späť“, tak sa dá predpokladať, že sa mu môžu hodiť posledné hodnoty formulárových polí či trebárs dynamicky vytvorené alebo menené elementy v JS. No pri reloade mi to príde ako chybné chovanie - návštevník vtedy asi očakáva zobrazenie stránky v takom stave, ako keby sa načítala prvý krát.
Chamurappi
Profil
Reaguji na Jispa:
nebo pomůže, ale jen po dobu běhu programu
Můžeš změnit selectedIndex při onloadu stránky, ten by měl nastat po obnovení stavu formuláře.

Nebo zkus zavolat formulář.reset(), tím se zresetuje celý formulář, takže by to mohlo přebít i prohlížečovu paměť.
Jisp
Profil
Chamurappi:
selectedIndex v onloadu jsou tím správným řešením - díky!!!
Já jsem ten příkaz měl na konci stránky ve scriptu; domníval jsem se, že má stejný účinek jako když je v onloadu. Není tomu tak a pořád dost dobře nevím, proč.

Vaše odpověď

Mohlo by se hodit

Nezapomeňte na odkaz na živou ukázku problému.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: