Autor | Zpráva | ||
---|---|---|---|
silverman Profil |
#1 · Zasláno: 14. 5. 2013, 17:44:28
Dobrý den všem,
hned na začátek uvedu, že jsem absolutní JavaScript lama a kód se kterým bych potřeboval pomoci lepím jak vlaštovka hnízdo. Prosím tedy o shovívavost a co nejméně šutrů na mojí hlavu :-). Dělám script na výpočet čisté mzdy, výsledky půjdou do MySQL databáze, ale s tím problém nemám. Problém je v tom, že bych to celé potřeboval "zautomatizovat" na jedno tlačítko a ne jak to mám zatím zpatlané já. Přidávám testovací funkční kód, který mám zatím hotový a chtěl bych poprosit někoho zkušeného jestli by mi s tím pomohl. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" /> <title>Výpočet mzdy</title> <script language="JavaScript"> <!-- function hodmzda_times_odphod(form) { hodmzda=eval(form.hodmzda.value) odphod=eval(form.odphod.value) hmzda=hodmzda*odphod form.hmzda.value=hmzda zzp=hmzda*0.045 form.zzp.value=zzp zsp=hmzda*0.065 form.zsp.value=zsp zmzp=hmzda*0.25 form.zmzp.value=zmzp zmsp=hmzda*0.09 form.zmsp.value=zmsp zvd=hmzda+zmzp+zmsp form.zvd.value=zvd dp=hmzda+zmzp+zmsp form.dp.value=dp } --> </script> </head> <center> <form name="formx"> <table width="800px" cellspacing="0" cellpadding="0" style="border: 1px solid #00006A;"> <tr> <td height="20" align="center" colspan="6" bgcolor="#006EB0"> <font color="#DEDEEF"><b>Výpočet mzdy</b></font> </td> </tr> <tr> <td><br> Hodinová mzda Kč:<input type=text size=10 name="hodmzda"></td> <td><br>Odpracované hodiny:<input type="text" size=10 name="odphod"></td> <td> </td> <td> </td> <td align="center"><br><input type="button" value=" Vypočítej " onClick="hodmzda_times_odphod(this.form)"></td> <td align="right"><br>Hrubá mzda v Kč:<input type="text" name="hmzda" size=10 value="0"> </td> </tr> <tr> <td colspan="6"><hr></td> </tr> <tr> <td></td> <td>Zdravotní pojištění zaměstnanec:</td> <td></td> <td><input type="hidden" name="zzp" size=10></td> <td align="center"><input type="button" value=" Vypočítej " onclick="formx.zp.value = Math.ceil(formx.zzp.value)"></td> <td align="right"><input type="text" name="zp" size=10 value="0"> </td> </tr> <tr> </tr> <tr> <td></td> <td>Sociální pojištění zaměstnanec:</td> <td></td> <td><input type="hidden" name="zsp" size=10></td> <td align="center"><input type="button" value=" Vypočítej " onclick="formx.sp.value = Math.ceil(formx.zsp.value)"></td> <td align="right"><input type="text" name="sp" size=10 value="0"> </td> </tr> <td colspan="6"><hr></td> <tr> <td></td> <td>Zdravotní pojištění zaměstnavatel:</td> <td></td> <td><input type="hidden" name="zmzp" size=10></td> <td align="center"><input type="button" value=" Vypočítej " onclick="formx.zpz.value = Math.ceil(formx.zmzp.value)"></td> <td align="right"><input type="text" name="zpz" size=10 value="0"> </td> </tr> <tr> </tr> <tr> <td></td> <td>Sociální pojištění zaměstnavatel:</td> <td></td> <td><input type="hidden" name="zmsp" size=10></td> <td align="center"><input type="button" value=" Vypočítej " onclick="formx.spz.value = Math.ceil(formx.zmsp.value)"></td> <td align="right"><input type="text" name="spz" size=10 value="0"> </td> </tr> <td colspan="6"><hr></td> <tr> <td></td> <td>Základ pro výpočet daně:</td> <td></td> <td><input type="hidden" name="zvd" size=10></td> <td align="center"><input type="button" value=" Vypočítej " onclick="formx.vd.value = Math.ceil(formx.zvd.value/100)*100"></td> <td align="right"><input type="text" name="vd" size=10 value="0"> </td> </tr> <td colspan="6"><hr></td> <tr> <td></td> <td>Daň z příjmů:</td> <td></td> <td><input type="hidden" name="dp" size=10></td> <td align="center"><input type="button" value=" Vypočítej " onclick="formx.dzp.value = Math.ceil(formx.dp.value/100)*100*0.15"></td> <td align="right"><input type="text" name="dzp" size=10 value="0"> </td> </tr> </table> </form> </center> |
||
peta Profil |
radek 31 -
width="800px" width nema hodnotu v px
radek 9+10 - misto eval se pouziva * 1 nebo parseFloat, kdyz chces prevest typ string na float radek 29 - schazi body radke 6 - zbytecny language, schazejici type="text/javascript" radek 30 - podle XHTML 1.0 Transitional//EN tam nemas action radek 38 - podle XHTML 1.0 Transitional//EN se pise lomitko v br <br/> (podobne na dalsich radcich i pro hr) radek 38 - podle XHTML 1.0 Transitional//EN se pisi uvozovky type="text" size="10" (podobne na dalsich radcich) radek 38 - podle XHTML 1.0 Transitional//EN se pisi uvozovky type="text" size="10" (podobne na dalsich radcich) radek 42 - podle XHTML 1.0 Transitional//EN se pise onclick s malym c atd Mam tu editor, ktery mi to obarvuje a mam tu cervene more. na jedno tlačítko Proc si tedy neudelas funkci treba onclickVse() {} a do ni nepresunes kod ze vsech onclick oddeleny strednikem?
Jedina zmena bude hodmzda_times_odphod(formx); misto this.form .
function onclickVse() { hodmzda_times_odphod(formx); formx.zp.value = Math.ceil(formx.zzp.value); formx.sp.value = Math.ceil(formx.zsp.value); ... } |
||
silverman Profil |
#3 · Zasláno: 15. 5. 2013, 08:38:06
Díky moc za připomínky a radu - odpoledne vyzkouším.
|
||
_es Profil |
silverman:
Viď: Časté potíže, zajímavosti a poučné debaty » Používejte var. Nemá to slúžiť ako formulár pre serverový skript, no je to tak spravené ( Formuláře » form) - stlačenie enter spôsobí jeho odoslanie - formulárové prvky nemusia byť vo formulári. |
||
Chamurappi Profil |
#5 · Zasláno: 15. 5. 2013, 11:26:18
Reaguji na peta:
To je zase snůška blbostí namixovaná s přijatelnými radami… „radek 29 - schazi body“ <body> nemá v HTML povinnou počáteční ani ukončovací značku. On používá HTML. Kdyby používal XHTML, tak se mu stránka ani nenalistuje.
„radke 6 - zbytecny language, schazejici type="text/javascript"“ Atribut type je také zbytečný.
„radek 30 - podle XHTML 1.0 Transitional//EN tam nemas action“ <!doctype> o pravidlech HTML nerozhoduje, v HTML 5 je action nepovinný. (Uvedený <!doctype> je v HTML 5 explicitně dovolený.)
„radek 38 - podle XHTML 1.0 Transitional//EN se pise lomitko v br <br/>“ + další tři takzvané chyby. A o syntaxi už <!doctype> nerozhoduje vůbec. Lomítko budou prohlížeče ignorovat.
Reaguji na _es: „formulárové prvky nemusia byť vo formulári“ Ale jejich hledání v DOMu je trochu pohodlnější, když v něm jsou. Na jeho místě bych možná spíš přidal formuláři onsubmit="return false" .
|
||
_es Profil |
#6 · Zasláno: 15. 5. 2013, 11:58:04
Chamurappi:
„Na jeho místě bych možná spíš přidal formuláři onsubmit="return false" .“
Čo zase spôsobí na strane užívateľa nepochopenie, ak je JS vypnutý (Prečo sa stránka stále znovu načíta?). Formulárové prvky mimo formulára to nespôsobia, len ten výpočet „nefunguje“. |
||
peta Profil |
#7 · Zasláno: 15. 5. 2013, 14:08:53
Chamurappi:
Muj validator i editor tam hlasi chyby a je to zpusobeno doctypem. Prijd, ukazi, ze kdyz zmenim doctype, tak spousta tech veci to zkousne. nerikam, ze to vadi prohlizeci. A pak je tu dost dobry argument, jednotnost. Jednou si vybral 1.0, ta ma jakasi pravidla a kdyz je pro meta dodrzet muze, tak je muze dodrzet i pro ostatni kod. At to nevypada, jako kdyby to psal chamurapi. |
||
Chamurappi Profil |
#8 · Zasláno: 15. 5. 2013, 17:31:47
Reaguji na peta:
„Muj validator i editor tam hlasi chyby“ A tvůj rozum je příliš slabý na to, aby sám vyhodnotil, zda dávají smysl. „Prijd, ukazi, ze kdyz zmenim doctype, tak spousta tech veci to zkousne.“ To je jeho chyba, ne autora stránky. Až se někdy vrátím k mému validátoru, jedna z prvních úprav bude, že zruším detekci DTD z <!doctype> deklarace. Všechno, co se posílá s MIME typem text/html , je v jurisdikci HTML 5.
„nerikam, ze to vadi prohlizeci.“ Já říkám, že mu to ani vadit nesmí, takže jsou to zcela zbytečná pravidla. Doporučuji ti vlastní soukromou pověrčivost praktikovat mimo diskusi. Reaguji na _es: „nepochopenie, ak je JS vypnutý“ To je fakt, ale nepochopení způsobují obě možnosti a v důsledku člověk bez JS tak jako tak nebude spokojen. Varianta s <form> em má blíž k tomu, že někdo někdy třeba dodělá serverové počítání.
|
||
silverman Profil |
#9 · Zasláno: 15. 5. 2013, 18:56:24
Koukám, že jsem ač nerad rozpoutal vášnivou debatu. Abych to alespoň částečně uvedl na správnou míru, musím podotknout, že HaTMatiLka jako taková je pouze testovací - abych viděl v nějaké formě jak to funguje a neměl to rozházené po stránce. Že se <br> a <hr> má psát s lomítky vím, že je chybou chybějící type="text/javascript" také vím, ale mě jde hlavně o ten JavaScript ostatní zatím neřeším protože ten výpočet mzdy bude modul do účtovací aplikace kterou jsem si spáchal a je celá v PHP a data jdou do MySQL. Zkoušel jsem radu od peta, ale asi jsem tupej a nějak mi to nefachá. Vypadá to takto:
function vypocitej() { hodmzda_times_odphod(formx); formx.zp.value = Math.ceil(formx.zzp.value); formx.sp.value = Math.ceil(formx.zsp.value); formx.zpz.value = Math.ceil(formx.zmzp.value; formx.spz.value = Math.ceil(formx.zmsp.value; formx.vd.value = Math.ceil(formx.zvd.value/100)*100; formx.dzp.value = Math.ceil(formx.dp.value/100)*100*0.15; } <input type="button" value=" Vypočítej " onclick="vypocitej()"> ale nic se neděje. Tipuju, že dělám chybu v tom tlačítku, ale nejsem si jistej :-( . |
||
peta Profil |
radk 5, 6nemas na konci zavorku ).
|
||
silverman Profil |
#11 · Zasláno: 16. 5. 2013, 12:13:58
Opět chyba mezi židlí a klávesnicí - bylo to tím. Funguje to - DÍKY MOC !!!
|
||
Chamurappi Profil |
#12 · Zasláno: 16. 5. 2013, 12:29:08
Reaguji na silvermana:
„Že se <br> a <hr> má psát s lomítky vím“ Ta lomítka tam budou úplně zbytečně, prohlížeč je bude ignorovat jako každou jinou syntaktickou chybu. „vím, že je chybou chybějící type="text/javascript"“ Jen podle starodávných nesmyslných pravidel. „výpočet mzdy bude modul do účtovací aplikace kterou jsem si spáchal a je celá v PHP“ Proč jsi i ten výpočet mzdy neudělal také v PHP? |
||
silverman Profil |
#13 · Zasláno: 16. 5. 2013, 14:25:18
No nerad bych opět rozpoutal vášnivou debatu tak se budu snažit odpovídat "opatrně".
K prvním dvěma připomínkám - na správnost psaní HTML jsem četl tolik názorů, že nevím co si vlastně vybrat. Validátory z preventivních důvodů už nepoužívám, protože jsem po jejich výsledcích zralej na antidepresiva :-). Na poslední otázku je (alespoň pro mě) jednoduchá odpověď: v účetnictví se zaokrouhluje prakticky pokaždé jinak a já našel víc postupů na vhodné zaokrouhlování v JavaScriptu než v PHP. No a abych byl upřímný tak si myslím, že na matematiku a grafiku je prostě JavaScript lepší. |
||
_es Profil |
#14 · Zasláno: 16. 5. 2013, 14:34:18
silverman:
„já našel víc postupů na vhodné zaokrouhlování v JavaScriptu než v PHP.“ Čo je na zaokrúhľovaní také zložité, že majú byť „rôzne postupy“? V kóde v [#1] je postup aký? „Postup“ predsa nezávisí od programovacieho jazyka. Prečo by sa rovnaký „postup“ ako v JS nedal použiť aj v PHP? „na matematiku a grafiku je prostě JavaScript lepší.“ Viď vlákno JavaScript nebo PHP. |
||
silverman Profil |
#15 · Zasláno: 16. 5. 2013, 15:35:56
Já to věděl :-)
Nepsal jsem, že jsou v zaokrouhlování "rôzne postupy", ale že se zaokrouhluje pokaždé jinak a v tom je rozdíl. Nevim jak se vyznáš v účetnictví, ale já ho dělám už pěknejch pár let. Tak,že v ukázce, která je pouhý začátek celého kódu je zaokrouhlování třeba tady: formx.vd.value = Math.ceil(formx.zvd.value/100)*100; což znamená zaokrouhlit superhrubou mzdu neboli Základ pro výpočet daně směrem nahoru na celé stovky. Tohle: formx.dzp.value = Math.ceil(formx.dp.value/100)*100*0.15; zase vypočítá a zaokrouhlí Zálohu na daň před uplatněním slev. Jen pro zajímavost - Sociální a zdravotní pojištění se pro změnu zaokrouhluje pouze na koruny nahoru. Kdo si sám dělá účetnictví a daňové přiznání tak dobře ví jakej je v zaokrouhlování hokej. No a bych to tedy jo rozvířil tak položím otázku: Když je tedy PHP a JS stejně vhodný na podobné aplikace proč prakticky každá online kalkulačka mzdy využívá JS. Např: http://www.mesec.cz/kalkulacky/vypocet-ciste-mzdy/ to na 100% neni PHP. Až to bude celé hotové klidně to sem hodim ať sám vidíš, že vypočítat výplatu kterou ti dělaj v účtárně neni žádná pr... Jinak berte vlákno za uzavřené a problém vyřešený - DÍKY TĚM CO MI POMOHLI !!! a nechtěli jen diskutovat. |
||
_es Profil |
#16 · Zasláno: 16. 5. 2013, 15:49:59
silverman:
„proč prakticky každá online kalkulačka mzdy využívá JS.“ 1) Pretože má návštevník výsledok výpočtu k dispozícii ihneď a nemusí čakať na odpoveď servera. 2) Pretože je server menej zaťažovaný. |
||
Časová prodleva: 11 let
|
0