Autor | Zpráva | ||
---|---|---|---|
tatyalien Profil |
#1 · Zasláno: 5. 12. 2010, 22:20:39 · Upravil/a: tatyalien
Dobrý večer, mám jeden problém, rozchodil jsem zobrazování / skrytí pomocí javascriptu na stránce, ale nevím, jak si mám "zapamatovat" stav....
Jde mě o toto: Na stránce mám jeden combobox, kde si uživatel vybere zadat médium: a) Film b) Data, pokud si vybere Film, zobrazí se mu část na zadávání údajů do Filmu (titulky, jazyk, ...), pokud data, tak velikost, obsah atd... Toto mě už funguje, ale pokud zadávám data a kliknu na tlačítko uložit, procházím ve skryptu data (php), zda je zadáno vše, pokud něco není, vracím uživateli předvyplněnou stránku s jeho datama a informuji ho, že něco nezadal... to se mě taky zobrazí, ale část, kterou měl zobrazenou (Film, nebo data) je schovaná a má zase vidět combobox na výběr... a toto bych chtěl nějak obejít, aby měl vidět formulář tak jak ho měl před odesláním. Používám toto: <script type="text/javascript"> function skryti(idecko){ var el = document.getElementById(idecko); el.style.display = 'none'; } function zobrazSkryj(idecko){ var el=document.getElementById(idecko).style; el.display=(el.display == 'block')?'none':'block'; } </script> <script> function vybraneBB(idecko){ if (idecko == '0') { var el=document.getElementById('0').style; el.display='none'; var el=document.getElementById('1').style; el.display='none'; var el=document.getElementById('2').style; el.display='none'; } else if (idecko == '1') { var el=document.getElementById('0').style; el.display='block'; var el=document.getElementById('1').style; el.display='block'; var el=document.getElementById('2').style; el.display='none'; } else { var el=document.getElementById('0').style; el.display='block'; var el=document.getElementById('1').style; el.display='none'; var el=document.getElementById('2').style; el.display='block'; } } </script> a v html: <select id='lbl_typB' onchange='vybraneBB(this.options[this.selectedIndex].value);' name='typB'><option value="0">Vyberte hodnotu</option> <option value="1" selected>Film</option> <option value="2">Data</option> </select> ... <div id="0"> <script>document.getElementById('0').style.display='none';</script> <fieldset> <legend>Společné hodnoty</legend> ... </fieldset> </div> <div id="1"> <script>document.getElementById('1').style.display='none';</script> <fieldset> <legend>Film</legend> ... </fieldset> </div> <div id="2"> <script>document.getElementById('2').style.display='none';</script> <fieldset> <legend>Data</legend> ... </fieldset> </div> |
||
TomasJ Profil |
#2 · Zasláno: 5. 12. 2010, 23:13:03 · Upravil/a: TomasJ
Jestli jsem pochopil správně, tak by to šlo udělat přes cookies, že by zůstalo po refreshi stránky otevřené pole, které má...
Já na to mám udělanou funkci v JS, z návodu Jak na Cookies na www.jpw.cz function setcookie(name, value, expires){ var date = new Date(); date.setTime(date.getTime()+expires); document.cookie = name+"="+value+";expires="+date.toGMTString(); } Jde to vyřešit i v PHP... Ve fci vybraneBB(idecko) máš chybu: var el=document.getElementById('0').style; * Pokud nechceš proměnnou el jako globální, dej před 'el=' ještě 'var' |
||
tatyalien Profil |
#3 · Zasláno: 6. 12. 2010, 11:38:17 · Upravil/a: tatyalien
TomasJ
No rozhodavl jsem se, že bych v nejhorším zadávání dat rozdělil na 3 stránky... 1 na rozcesník a zbylé dvě na Film a poslední na Data... Chybu opravím ve scriptu, ten jsem totiž kopíroval z webu... ta tvá funkce setcookie ta nastavuje proměnnou name s hodnotou value + expirace... jestli chápu dobře. Jak pak v Javascriptu po refreshy stránky si vytáhnu tu hodnotu z cookie? Abych pak udělal asi na konci načtené stránky if cookie = "1" zobraz.. bla bla atd.. Tak jsem sesmolil toto, je to blbost nebo ne? Na localhostu se to tváří že jo, jen to zatím nemůžu otestovat v rachotě, doma to prubnu víc... asi si jen dám podmínku v php, zda nebyl zatím proveden post, tak abych odstranil proměnou z cookie, co myslíte? // převzato od http://diskuse.jakpsatweb.cz <script type="text/javascript"> function skryti(idecko){ var el = document.getElementById(idecko); el.style.display = 'none'; } function zobrazSkryj(idecko){ var el=document.getElementById(idecko).style; el.display=(el.display == 'block')?'none':'block'; } </script> <script> function vybraneBB(idecko){ if (idecko == '0') { var el=document.getElementById('0').style; el.display='none'; var el=document.getElementById('1').style; el.display='none'; var el=document.getElementById('2').style; el.display='none'; } else if (idecko == '1') { var el=document.getElementById('0').style; el.display='block'; var el=document.getElementById('1').style; el.display='block'; var el=document.getElementById('2').style; el.display='none'; } else { var el=document.getElementById('0').style; el.display='block'; var el=document.getElementById('1').style; el.display='none'; var el=document.getElementById('2').style; el.display='block'; } cookiee(idecko); } //přečte cookie function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } //nastaví nebo smaže cookie po kliknití na onclick function cookiee(idecko) { if (readCookie('zobrazit') == 1) { createCookie('zobrazit', '', -1); } else { createCookie('zobrazit', idecko, '7'); } } //vytvoří cookie function createCookie(name,value,days) { if (days) {//jsou li zadány dny var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); //zadá počet dnů platnosti cookie var expires = "; expires="+date.toGMTString(); } else var expires = ""; //pokud nejsou zadány dny, tak se cookie smaže se zavřením prohlížeče document.cookie = name+"="+value+expires+"; path=/"; } </script> <select id='lbl_typB' onchange='vybraneBB(this.options[this.selectedIndex].value);' name='typB'><option value="0" selected>Vyberte hodnotu</option> <option value="1">Film</option> <option value="2">Data</option> </select> ... <div id="0"> <script>document.getElementById('0').style.display='none';</script> <fieldset> <legend>Společné hodnoty</legend> ... </fieldset> </div> <div id="1"> <script>document.getElementById('1').style.display='none';</script> <fieldset> <legend>Film</legend> ... </fieldset> </div> <div id="2"> <script>document.getElementById('2').style.display='none';</script> <fieldset> <legend>Data</legend> ... </fieldset> </div> <script> if (readCookie('zobrazit') == '0') { var el=document.getElementById('0').style; el.display='none'; var el=document.getElementById('1').style; el.display='none'; var el=document.getElementById('2').style; el.display='none'; } else if (readCookie('zobrazit') == '1') { var el=document.getElementById('0').style; el.display='block'; var el=document.getElementById('1').style; el.display='block'; var el=document.getElementById('2').style; el.display='none'; } else if (readCookie('zobrazit') == '2') { var el=document.getElementById('0').style; el.display='block'; var el=document.getElementById('1').style; el.display='none'; var el=document.getElementById('2').style; el.display='block'; } else { var el=document.getElementById('0').style; el.display='none'; var el=document.getElementById('1').style; el.display='none'; var el=document.getElementById('2').style; el.display='none'; } </script> |
||
TomasJ Profil |
#4 · Zasláno: 6. 12. 2010, 16:32:02 · Upravil/a: TomasJ
tatyalien:
Snad jen, proč nastavuješ JavaScriptem dipslay:none; ? viz: <div id="2"> <script>document.getElementById('2').style.display='none';</script> ... stačí udělat: <div id="2" style="display:none;">... |
||
tatyalien Profil |
#5 · Zasláno: 6. 12. 2010, 21:14:13
Nastavuji to javascriptem protože, pokud má uživat javascript vypnutý, tak by se mu daný blok nezobrazil nikdy... takto pokud ho má vyplý, tak se mu jen ukáže celá stránka.
|
||
Časová prodleva: 15 let
|
0