Autor | Zpráva | ||
---|---|---|---|
koudelacek Profil * |
#1 · Zasláno: 9. 6. 2012, 18:57:25 · Upravil/a: Moderátor (editace znemožněna) 10. 6. 2012, 17:02:44
Dobrý den, javascriptům nerozumím a potřebuji poradit jak spočítat hodnotu ze tří inputů formuláře ( aby se to měnilo podle toho, co uživatel vypíše ) a pokud by to bylo jen trochu možné, aby si to vybíralo jen čísla, kdyby náhodou zadal uživatel číslo s mezerou, tečkou apod. Formulář vypadá takto:
<tr> <td class="bold">Volba platby</td> <td class="right"> PLATBA PŘEDEM<input class="radio" name="pay" type="radio" checked="checked" value="paybefore" />V tomto případě platí standartní poplatek 10% z celkové výhry.<br /> PLATBA PO UKONČENÍ SOUTĚŽE<input class="radio" name="pay" type="radio" value="payafter" />V tomto případě platí zvýšený poplatek 14% z celkové výhry.<br /> </td> </tr> <tr> <td class="bold">1. MÍSTO</td> <td><input class="dark" name="first_place" type="text" /></td> </tr> <tr> <td class="bold">2. MÍSTO*</td> <td><input name="second_place" type="text" /></td> </tr> <tr> <td class="bold">3. MÍSTO*</td> <td><input name="third_place" type="text" /><input name="prize" type="text" /></td> </tr> <tr> <td class="bold">Doplňové služby</td> <td class="right">Zvýhodněné umístění <input class="check" name="top" type="checkbox" /> Za tuto službu činí poplatek 2% z celkové výhry.<br /> Dvojnásobná délka zobrazení projektu</strong><input class="check" name="top" type="checkbox" />Prodlouží projekt na 20 dnů. Poplatek činí 1%.</td> </tr> Částky budou udané v polích first, second a third prize, ty se spočítají a podle toho jestli je zaškrknuto platba předem nebo platba potom a jeste jsou zaškrknuty nějaké další služby to spočítá ty % ze součtu ceny co tam uživatel zadal. Př. platba předem - 10% 1.místo - 5000 2.místo - 3000 3.místo - 2000 + zaskrknul zvyhodnene umisteni - 2% Celkove to v poli ceny tedy vypise: 1.200 Kč ( 5000+3000+2000 * 12 / 100 ) Děkuji moc za každou radu, našel jsem něco podobného pouze jako formulář s inputy apod. byl bych rád spíše za konkrétní kódy než jen odkazy. Budu vděčný. Moderátor Davex: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Darker Profil |
#2 · Zasláno: 10. 6. 2012, 20:17:23
Kód ti zde nenapíšu, ale budeš potřebovat následující věci:
1. Nahrazení nečíselných znaků: var jencisla = text.replace(/[^0-9\.]/g, ""); <input type="text" onkeypress="funkce();" /> <input type="checkbox" onclick="funkce();" /> <form id="formular" method="post"> <input type="text" id="prvni" name="pole" /></form> var input = document.getElementById("formular").pole; /*nebo*/ input = document.getElementsByName("pole")[0]; /*nebo*/ input = document.getElementById("prvni"); var hodnota = 59; var celkem = 111; var procenta = Math.round((hodnota/celkem)*100*100)/100; //na DVE desetinna mista var element = document.getElementById("element"); var vysledek = pocitejKraviny(); //Pokud je formularovy prvek element.value = "Vyšlo: "+vysledek; //Pokud je div, span, nebo cokoli dalsiho: element.innerHTML = "Vyšlo: "+vysledek; To počítání ceny jsem nějak nepochopil, ale s tím co jsem ti zde popsal bys to měl zvládnout sám... |
||
koudelacek Profil * |
#3 · Zasláno: 11. 6. 2012, 17:47:20
Děkuju, pokusím se.
|
||
koudelacek Profil * |
#4 · Zasláno: 11. 6. 2012, 20:58:20
Prosímtě, napsal jsem si
nejaka funkce { var first = document.form.first_place.value; document.form.vysledek.value = (first); } a v html mám formulář, kde je input first_place a v něm on key press a tahle funkce a dole je dalsi input s nazvem vysledek.. celkove to funguje, ale do toho pole vysledek se vzdy vypisuje az jak kdyby opozdene... zmacku 1 - nic, zmacku 2 - v poli vysledek to vypise 1, zmacku 3 - v poli vysledek to vypise 2.. proste je to "opozdene o jedno zmacknuti", muzes mi s tim poradit ? |
||
peta Profil |
#5 · Zasláno: 12. 6. 2012, 07:58:06
onkeypress = onkeydown + onkeyup
Tak pouzij onkeydown, ne? |
||
Tori Profil |
#6 · Zasláno: 12. 6. 2012, 14:11:22
koudelacek:
„do toho pole vysledek se vzdy vypisuje az jak kdyby opozdene“ Odlišné pořadí událostí v různých prohlížečích (v souladu se specifikací), MSIE při stisku klávesy vyvolá jen keydown, a keypress až buď při další změně, nebo po opuštění prvku. Totéž se týká události change, je jistější místo ní odchytávat click. Blur se zase někdy nespouští vůbec (např. checkboxy v Chrome 17). |
||
koudelacek Profil * |
#7 · Zasláno: 12. 6. 2012, 16:49:55 · Upravil/a: koudelacek
Děkuju za rady, nakonec jsem to rozjel až s onkeyup, onkeydown dělalo stejný problém. Ale mám ještě jeden a to když potřebuju sečist nějaké data, čtu už půl hodiny jak sčítat a pořád mi to nedělá co potřebuju.
Zkoušel jsem mnoho možností, ale vždy mi to místo sečtení napsalo proměnné za sebe. Poraďte prosím. Potřebuju sečíst ( first+second+third ) * platba / 100. <script> function vypis(){ if(document.form.pay[0].checked) { var platba = "10";} else { var platba = "14";} var first = document.form.first_place.value; var second = document.form.second_place.value; var third = document.form.third_place.value; if(document.form.top.checked) { platba++;platba++;} if(document.form.time.checked) { platba++;} document.form.vysledek.value = platba; } </script> Nakonec se mi podařilo něco sestavit, ale někde jsem četl, že funkce eval se nemá používat .. tady se ptám, je to korektní ? function vypis(){ if(document.form.pay[0].checked) {platba = "10";} else {platba = "14";} var first = document.form.first_place.value; var second = document.form.second_place.value; var third = document.form.third_place.value; if (document.form.first_place.value!="") var first = eval(first); if (document.form.second_place.value!="") var second = eval(second); if (document.form.third_place.value!="") var third = eval(third); if(document.form.top.checked) { platba++;platba++;} if(document.form.time.checked) { platba++;} platba = eval(platba); document.form.vysledek.value = (first+second+third)*platba/100; } |
||
Tori Profil |
Máme např. funkci parseInt, eval je fuj. :)
edit: Anebo přetypovat na číslo, nevím co je lepší var first = document.form.first_place.value * 1;
|
||
Časová prodleva: 3 dny
|
|||
peta Profil |
#9 · Zasláno: 15. 6. 2012, 15:38:37
Jj, to, co scitas, jsou stringy (ulozene ve value).
'123' + '456' = '123456' 123 + 456 = 579 |
||
Časová prodleva: 12 let
|
0