Autor | Zpráva | ||
---|---|---|---|
inetMark Profil |
#1 · Zasláno: 17. 7. 2007, 19:18:40
Ak mam nejaky select a v nom option a chcem do nejakeho labela vypisovat sumu podla toho, aky option bol vybraty ako je to mozne?
Ide mi o to, ze v jednom selecte sa vybere nazov polozky (ten urci cenu) a v inom selecte sa urci pocet kusov. Teda do lebela sa ma vypise prve krat druhe. Ako na to? |
||
Trejpa Profil |
#2 · Zasláno: 17. 7. 2007, 20:28:59
inetMark
Co třeba takto: <script type="text/javascript"> <!-- function Pocitadlo() { var a = document.formular.jmeno.value; var b = document.formular.pocet.value; document.formular.vysledek.value = a * b; } //--> </script> <form action="#" name="formular" onsubmit="return false;"> <fieldset> <label for="jmeno">Zboží</label> <select name="jmeno" id="jmeno" onchange="Pocitadlo();"> <option value="60">Kuře (za 60)</option> <option value="70">Hovězí (za 70)</option> <option value="85">Ryba (za 85)</option> </select><br> <label for="pocet">Množství</label> <select name="pocet" id="pocet" onchange="Pocitadlo();"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select><br> <label for="vysledek">Celková cena</label> <input type="text" name="vysledek" id="vysledek"> </fieldset> </form> Teda do lebela sa ma vypise prve krat druhe. Do <label> asi ne. Do <input> by to šlo. |
||
inetMark Profil |
#3 · Zasláno: 17. 7. 2007, 20:35:36 · Upravil/a: inetMark
Dakujem pekne. S javascriptom vsak neviem vobec robit. Text medzi <!-- //--> mam dat do head, body ci medzi ne? alebo staci priamo nad formular? Dalej da sa nastavit ten input type text na readonly?
Dakujem. EDIT: Nahodil som to do suboru. Ako mam teraz tu funkciu volat? Urobil som ako si pisal, ale pri zmene polozky v option a ani pri zmene hodnoty v pocte kusov sa mi suma nezobrazi. //toto je v BODY HTML <script type="text/javascript"> <!-- function Pocitadlo() { var a = document.formular.poclicencii.value; var b = document.formular.program.value; document.formular.vysledok.value = a * b; } //--> </script> //... nasleduje deklarovanie formulara atd... a potom toto <input name='poclicencii' size='2' maxlength='40' type='text' value='1' onchange='Pocitadlo();'> <select name='program' size='1' onchange='Pocitadlo();'> <option value='100'>p1 <option value='200'>p2 <option value='300'>p3 <option value='400'>p5 </select> <label for='vysledok'>Celková cena</label> <input type='text' name='vysledok' id='vysledok'> |
||
inetMark Profil |
#4 · Zasláno: 17. 7. 2007, 20:58:30 · Upravil/a: inetMark
Az teraz som zbadal: onchange="Pocitadlo();
Doplnil som to tam, vsak stale mi to nejde :( |
||
Trejpa Profil |
#5 · Zasláno: 17. 7. 2007, 21:03:09
inetMark
da sa nastavit ten input type text na readonly? Ano, dá. (A proč to rovnou nevyzkoušíš?) Text medzi <!-- //--> mam dat do head, body ci medzi ne? Je jedno, kam skript umístíš, obvykle se dává do hlavičky (ale včetně značek <script> a </script>), ale pokud ho dáš před formulář, tak také nic nezkazíš. U přímo volaných funkcí (není tento případ) je nutno zajistit, aby byly funkce načteny před načtením elementu, který je volá (třeba je volá rovnou <body>). Proto se dávají před <body>, tedy do hlavičky. Skripty, které něco do stránky zapisují (document.write), musí být pochopitelně přímo v <body>. |
||
inetMark Profil |
#6 · Zasláno: 17. 7. 2007, 21:05:33
Dakujem.
A teda este v com mam problem ze mi to nejde? |
||
Trejpa Profil |
#7 · Zasláno: 17. 7. 2007, 21:32:27
inetMark
Mě to funguje. Nezapomeň, že to musí být ve formuláři (<form>), ten se musí jmenovat (name) a přes toto jméno se na položky odkazuješ (document.formular.poclicencii.value). Onchange se u inputu projeví až kliknutím mimo políčko. A také by sis měl ošetřit případ, že tam někdo vloží něco jiného, než číslo (ale svět ani prohlížeč se nezbortí, násobení místo výsledku vrátí NaN). <script type="text/javascript"> <!-- function Pocitadlo2() { var c = document.formular2.poclicencii.value; var d = document.formular2.program.value; document.formular2.vysledok.value = c * d; } //--> </script> <form action="#" name="formular2" onsubmit="return false;"> <input name='poclicencii' size='2' maxlength='40' value='1' onchange='Pocitadlo2();'> <select name='program' onchange='Pocitadlo2();'> <option value='100'>p1 <option value='200'>p2 <option value='300'>p3 <option value='400'>p5 </select> <label for='vysledok'>Celková cena</label> <input type='text' name='vysledok' id='vysledok'> </form> |
||
inetMark Profil |
#8 · Zasláno: 17. 7. 2007, 21:47:15 · Upravil/a: inetMark
Ospravedlnujem sa, sice som to sem nedal, ale ak islo o to ,ze script nebol zakonecny, tak bol, len som to nedal sem. Prispevok som uz editol. Dokonca som pridal volanie funkie aj na onFocus a tiez sa nic nedeje.
nazov formularov je rovnaky. Ak skopirujem kompletne tvoj text do noveho suboru tak mi to ide :) . Len neviem spojazdnit to moje. No nic, idem hladat chybu :) Edit: Rozmyslam, ci nemoze byt problem to, ze cely formular (od zaciatku az po konec, je vlozeny pomocou PHP do premennej a to takto $mojformular = " <form name='formular' id='formular' action='objednavka.php' method='post'> ...atd (vratane tych inputov vyssie uvedenych "; Ak je toto problem, tak neviem co mam robit. Pretoze tu premennu pouzivam na troch miestach. Ak ju zrusim, tak na 3 miestach budem musiet umiestnit vykreslenie jedneho formulara. Totiz ide o to ze samotny PHP subor je pouzivany na odoslanie mailu (objednavky) a aj na vykreslenie formulara. Ten formular sa vsak vykresluje len vtedy, ak je jeden hiden input value=="ok". Ak totiz nie je ok vykresli sa formular. Ak je OK tak sa vypise na 2 sekundy text a az potom sa vykresli formular (vdaka tej premennej prave). |
||
Trejpa Profil |
#9 · Zasláno: 17. 7. 2007, 21:55:21
inetMark
Vždyť jsem ti to už napsal, prvky formuláře musí být ve formuláři, v tomto případě se musí jmenovat "formular". Ten ti tam stále chybí. <form name="formular"> ... </form> |
||
inetMark Profil |
#10 · Zasláno: 17. 7. 2007, 21:57:24
Formular tam mam. Nepisal som cely kod, moja chyba. Teraz som editor predosli prispevok, co ma jedine napada ze preco to nefunguje. Napisem to aj sem
Edit: Rozmyslam, ci nemoze byt problem to, ze cely formular (od zaciatku az po konec, je vlozeny pomocou PHP do premennej a to takto $mojformular = " <form name='formular' id='formular' action='objednavka.php' method='post'> ...atd (vratane tych inputov vyssie uvedenych "; Ak je toto problem, tak neviem co mam robit. Pretoze tu premennu pouzivam na troch miestach. Ak ju zrusim, tak na 3 miestach budem musiet umiestnit vykreslenie jedneho formulara. Totiz ide o to ze samotny PHP subor je pouzivany na odoslanie mailu (objednavky) a aj na vykreslenie formulara. Ten formular sa vsak vykresluje len vtedy, ak je jeden hiden input value=="ok". Ak totiz nie je ok vykresli sa formular. Ak je OK tak sa vypise na 2 sekundy text a az potom sa vykresli formular (vdaka tej premennej prave). |
||
inetMark Profil |
#11 · Zasláno: 17. 7. 2007, 22:08:12
Dal som to mimo premennej PHP a ide to. Chcem tam mat este jeden checkbox aby sa pri jeho zaskrtnuti priratalo 50,-Sk. Neviem ako na to. V JavaScripte mam toto:
<script type='text/javascript'> <!-- function Pocitadlo() { var a = document.formular.poclicencii.value; var b = document.formular.program.value; var c = document.formular.cd.checked; //to CD je ten input checkbox takto deklarovany je nizsie var d = a * b; if (c == "checked") {d = d + 50}; document.formular.vysledok.value = d; } <input type='checkbox' name='cd' checked='checked' value='1' onchange='Pocitadlo();'> |
||
Trejpa Profil |
#12 · Zasláno: 18. 7. 2007, 10:42:56
inetMark
Pozor: c = document.formular.cd.checked; nevrací "checked", ale true nebo false. Tak si buď oprav podmínku na if (c) {d += 50};, nebo použij toto: function Pocitadlo() { var a = document.formular.poclicencii.value; var b = document.formular.program.value; var c = document.formular.cd.checked; document.formular.vysledok.value = a * b + c * 50 * a; } // To poslední *a násobí tu 50ku počtem kusů (za předpokladu co kus, to CD). // Pokud je to CD jen jedno k celé dodávce, tak poslední *a umaž. |
||
inetMark Profil |
#13 · Zasláno: 18. 7. 2007, 11:27:25
Dakujem. Ze vracia TRUE a FALSE som nevedel. Ostatne uz nie je problem. Syntax je podobna C#, takze som si to cele upravil uz (aj na mnozstevne zlavy).
S tym checked ma mylilo to, ze som niekde cital ze v xhtml ma input checkbox atribut checked a ten sa v xhtml pise ako checked="checked" ak chcem aby bol zaciarknuty. |
||
Trejpa Profil |
#14 · Zasláno: 18. 7. 2007, 13:08:45
inetMark
v xhtml ma input checkbox atribut checked Ano. V (X)HTML je jedinou možnou hodnotou atributu checked právě checked. V JavaScriptu se k zatržení políčka přistupuje jinak, hodnotami true a false. Zápis <input type='checkbox' checked='true'> by byl tedy špatně (ale funguje). |
||
Časová prodleva: 17 let
|
0