Autor | Zpráva | ||
---|---|---|---|
hondziiikh Profil * |
#1 · Zasláno: 11. 9. 2010, 14:35:59
zdravíčko, trochu se trápím s formem, kde po onDblclick na
<input type="text"> Jenže problém, který jsem si později uvědomil, je v tom, že mi tam dá čas načtení stránky, nikoli čas onDblclicku.. To znamená, že když načtu stránku ve 14:11 a onDblclicknu na input v 18:30, tak se mi tam nacpe 14:11.. Ukázka s PHP <input type="text" name="datum" value="" onDblclick="this.value='<?php echo date("H:i.s");?>'" /> Došlo mi už, že PHP zde asi nemá co dělat :) můžete někdo prosím poradit jak to tedy udělat s javascriptem? Zkoušel jsem všemožné čuňačiny s časem(odpočty, hodiny, apod) co jsem kde vysosal z googlu, ale jak tomu jscriptu nerozumim, tak mi to pak nehraje dohromady :) Děkuji j |
||
Witiko Profil |
#2 · Zasláno: 11. 9. 2010, 19:13:21
Tak zaprvé, JScript != Javascript.
Jinak by možná pomohlo počíst si o objektu Date. Výsledek by mohl vypadat nějak takto: <input type="text" name="datum" value="" ondblclick="var now = new Date();this.value=now.getHours()+\":\"+now.getMinutes()+\".\"+now.getSeconds();" /> |
||
hondziiikh Profil * |
#3 · Zasláno: 11. 9. 2010, 20:20:18
Tak to mi nefunguje :( Ať klikam doubleklikam nebo se třeba stavím na hlavu, tak to nic nedělá :( s tím jscript jsem si nějak neuvědomil existenci dalšího jazyka :) tak se omluvuju :)
|
||
Darker Profil |
#4 · Zasláno: 11. 9. 2010, 20:37:52
No jen tak mimochodem, můžeš pomocí PHP do stránky vložit aktuální čas, a pak ho počítat pomocí setInterval.
Např: var time={sekundy:1*"<?echo Date("s")?>",minuty:1*"<?echo Date("i")?>",hodiny:1*"<?echo Date("G")?>",}; setInterval("time.sekundy++;if(time.sekundy==60){time.minuty++;time.sekundy=00;if(time.minuty==60){time.minuty=0;time.hodiny++}}",1000); |
||
panther Profil |
#5 · Zasláno: 11. 9. 2010, 20:45:58
Darker:
ten tvůj příklad nebude fungovat minimálně z toho důvodu, že jsou v něm špatně uvozovky, když už nic jiného. |
||
Witiko Profil |
#6 · Zasláno: 11. 9. 2010, 20:54:16
Darker:
Na něco podobného jsem zde před časem posílal hotové řešení. |
||
hondziiikh Profil * |
#7 · Zasláno: 12. 9. 2010, 11:10:14
Pozor, nejde mi o aktualizujici se čas.. potřebuju prostě po dvojkliku aby se do inputu dostal cas a ten tam byl. uloží se posléze spolu s ostatními inputy.. V podstatě moje ukázka [#1] funguje, ale ne s aktuálním časem ale s časem načtení str. To bych zvladl, ale ne s aktuálním :) a jestli je to klientský, nebo serverový je mi jedno, zase to nemusí být přesné v ms, a vlastně ani v s :)
|
||
hondziiikh Profil * |
#8 · Zasláno: 12. 9. 2010, 11:15:15
Aha! Moment, tohleto funguje [#2] Witiko .. panther má pravdu, po opravě uvozovek to jede jak má :) celkem kód:
<input type="text" name="datum" value="" ondblclick="var now = new Date();this.value=now.getHours()+':'+now.getMinutes()+'.'+now.getSeconds();" /> |
||
hondziiikh Profil * |
#9 · Zasláno: 12. 9. 2010, 11:16:13
pravda nevím, jestli tyto uvozovky jsou ok, ale frčí to, tak to tak nechám. Kdyby to jinak bylo správněji (a fungovalo :) ) tak to prosím poopravte pro generace budoucí :) Moc díky ještě jednou
|
||
Witiko Profil |
#10 · Zasláno: 12. 9. 2010, 11:18:06 · Upravil/a: Witiko
Moment, tohle mě zajímá. Atribut HTML elementu je textový řetězec. Uvnitř jeho definice v těle dokumentu nelze escapovat symboly? Většinou definuji eventy rovnou přes řídící script, tak jsem neměl zatím moc potřebu tohle zkoušet.
|
||
Chamurappi Profil |
#11 · Zasláno: 12. 9. 2010, 14:35:07
Reaguji na Witika:
„Atribut HTML elementu je textový řetězec.“ Je to především atribut, jeho obsah se řídí syntaktickými pravidly HTML, nikoliv syntaktickými pravidly JavaScriptu. HTML parser prohlížeče neví, že zrovna tento atribut poslouží JavaScriptu. „Uvnitř jeho definice v těle dokumentu nelze escapovat symboly?“ Lze — podle HTML pravidel. Takže uvozovky můžeš nahradit entitami. (V atributech se na rozdíl od <script> ů interpretují.)
|
||
Darker Profil |
#12 · Zasláno: 12. 9. 2010, 16:52:13
panther:
„nebude fungovat“ O co se vsadíme? |
||
Witiko Profil |
#13 · Zasláno: 12. 9. 2010, 17:10:04 · Upravil/a: Witiko
darker:
Přetypovávat řetězec tak, že ho vynásobíš 1 je sice celkem hnus, ale fungovat ti to bude. Na přetypování tu máme parseInt(), Number(), ale hlavně ve svém případě vůbec přetypovávat nemusíš, jednoduše číslo navrácené php scriptem neobaluj uvozovkami. No a potom samozřejmě eval řetězec v setInterval místo definice funkce (už jsem ti to opravovat tady). Samotné přičítání - setInterval() si sice drží daný interval a i pokud spustí script s mírným spožděním, dodržuje dané časy. Problém je, že pokud nestíhá vůbec, tak v zájmu zachování intervalu může jednotlivá volání zcela vypustit (pokud nestihne za jednu sekundu script spustit) - tím by se ti pak čas postupně desynchronizoval. Doporučuji namísto toho využít objektu Date() a čas navrácený php si definovat v javascriptu jako rozdíl oproti času klientského počítače a pak už jenom vykreslovat klientův aktuální čas upravený podle času serveru. Ucelené řešení jsem, jak už jsem říkal, posílal sem. Chamurappi: „rozdíl od <script>ů“ Můžu se zeptat jaký je zde BBkód pro inline zvýraznění syntaxe? :) |
||
Časová prodleva: 14 let
|
0