

HTML - Zamenil som tlačítko za odkaz a aplikácia raz ide raz nie
Viete mi poradiť, prečo mi tento súbor funguje a vo veľkej aplikácii mi to včera išlo a dnes nie? Nezmenil som nič, len som vlastne včera vypol počítač a dnes zapol a nejde to. Ak odkaz vymením v tej aplikácii za tlačítko, tak to ide. V tomto ukážkovom príklade má odkaz aj tlačítko tú istú funkciu. Tento ukážkový príklad funguje aj vtedy, keď aplikácia nie, hoci odkazy <a> sú zapísané rovnako.
hidden_enter: <? echo $_POST["hidden_enter"] ?>
<br>
hidden_work: <? echo $_POST["hidden_work"] ?>
<br><br>
<?php
$id=10;
echo"
<form name='test_form' id='invoice_form' method='post' action=''>
<a href='#' onclick=\"hidden_enter.value='hehehe'; hidden_work.value='$id'; test_form.submit();\">test</a>
<input type='button' onclick=\"hidden_enter.value='hehehe'; hidden_work.value='$id'; test_form.submit();\" value='test'>
<input id='hidden_enter' name='hidden_enter' type='hidden' value=''>
<input id='hidden_work' name='hidden_work' type='hidden' value=''>
</form>";
?>
Vidim hromadu (zbytecneho ?) JavaScriptu.
Takže z toho vyvozuji, že když v prohlížeči, kde to nefunguje klikneš na JS konzolu, tak to tam budeš mat napisane.
Sprav to isté bez zbytočného JavaScriptu.
1. Pisal ti ze si mas pozriet JS konzolu v momente ked to nefunguje. Uz si si ju pozrel?
2. Je to totalne neprehladne a kopec JS veci je tam IMHO zbytocnych, pokusal som sa tie 3riadky minutu lustit ale to je bez sance co to je tam za chaos, napis sem jasne ze co funguje (copy-paste zdrojak), a co nefunguje (copy-paste zdrojak) a ako presne to "nefunguje"
Toľko skúseností s JS ešte nemám, s PHP je to u mňa omnoho lepšie. Ale IE mi chybu nepísal. Písal mi ju len FireBug pre FF, ale tej hláške som nerozumel. Písal mi, že nepozná element hidden_enter, chýbal mu tam totiž pred tým formulár.
Dostal som radu zameniť '#' za 'javascript:void(0)'. Funguje mi to už v Opere, ale Firefox nejde ani tak. V IE to funguje s '#', ale s JavaScriptom nie.
podla mna ti tam chybaju uvodne uvodzovky (t.j. \" na zaciatku), ale sak si to z toho JS daj vypisat niekam (trebars cez alert) a skontroluj si ze co za HTML kod to vygenerovalo. Podla toho budes vidiet ze co je zle.
P.S: resp. to tam mas PHP skript (az teraz som si to vsimol) tak sem daj to co ti ten php script vygeneroval (HTML kod)
Uvedený príklad je funkčný. To isté som mal implementované v rozsiahlej aplikácii (po zbalení takmer 1 MB) a tam to nešlo. Už je to vyriešené.
preistotu skus to href='#' zmenit na href=\"#\"
Takže mám to vyriešené. Problém nebol ani v zbytočnostiach, všetko, čo tam bolo, tak tam aj musí byť. Úvodzovky boli tiež v poriadku, s tými bol problém predtým, ale už omnoho dávnejšie. Písal som predsa, že včera to išlo a dnes nie. Zrejme som tam urobil nejakú úpravu a Opera to už nezvládla a teda to dnes už nešlo. Takže riešenie:
IE - Internet Explorer
FF - Firefox
Op - Opera
Ako hlavný prehliadač používam Operu.
Takto ako to bolo mi to nefungovalo v žiadnom prehliadači.
1. Dostal som radu zameniť '#' za 'javascript:void(0)'. V Op mi to začalo fungovať.
2. Ďalej som dostal radu, že mám pri hidden prvkoch pridať aj formulár, čiže nie hidden_enter, ale test_form.hidden_enter. Od tejto chvíle začal fungovať IE pri použití '#', ale s JavaScriptom to stále nešlo. Vo FF to funguje aj s '#' aj s JavaScriptom.
3. Keďže IE s JavaScriptom stále nešlo, trochu som pobehal webové stránky a našiel som podobne riešený prihlasovací formulár na www.orangeportal.sk. Tam som si všimol, že v odkaze je použité href='javascript:document.form_login.submit()'. Skúsil som použiť toto miesto pôvodného 'javscript:void(0)'. Z onclick som vyradil submit(), nakoľko by bol zdvojený. Od tejto chvíle to funguje v IE, FF aj v Op. Problém považujem za vyriešený a dúfam, že to pôjde aj zajtra.
Ale nakoľko prihlasovací formulár na OrangePortali mi funguje, keďže denne z FF aj z Op posielam niekoľko SMS, tak myslím, že sa už problém s týmto nevyskytne.
Edit: Toto je asi prvýkrát, kde som sa stretol s dosť značným rozdielom pri prehliadačoch. Ale keďže mám knižku o JavaScripte, tak tam som sa už stihol dočítať, že JavaScript v určitých detailoch je v každom prehliadači inak implementovaný.