| Autor | Správa |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: Ne 21.02.10 21:04 |   |
Ako je prosim mozne spravit takyto formular:
Moznost vyberu: napr.
1. Vyber si farbu tricka: cervene, zelene, atd.
2. Vyber si velkost: S, M, XL, XXL, atd.
Dole by malo byt tlacidlo spocitaj a ma to vypisat cenu.
V HTML to viem spravit ale neviem ako na ten vysledok - vypisat cenu.
dik za pomoc. |
| |
  |
 |
Tominator
 Zablokovaný užívateľ
 Založený: 21.02.2007 Príspevky: 4009
 | Zaslal: Ne 21.02.10 21:28 |   |
Cez javascript (bez refreshu) alebo PHP refreshom. |
| |
  |
 |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: Ne 21.02.10 21:47 |   |
| kód: | <Form>
Vyber 1.:<input type="checkbox" checked name="zaskrnut" value="nie"><br>
Vyber 2.:<input type="checkbox" checked name="zaskrnut" value="nie"><br>
Vyber 3.:<input type="checkbox" checked name="zaskrnut" value="nie"><br>
Vyber 4.:<input type="checkbox" checked name="zaskrnut" value="nie"><br>
<br>
Vyber 5.:<input type="radio" name="puntik" value="horny">hore<br>
<input type="radio" name="puntik" value="dolny" checked>dole<br>
<br><br>
Vyber 5.:<select name="pocet" size="1">
<option value="1">1
<option value="1">2
<option value="3">3
<option value="4">4
</select>
</ Form> |
Takto mam formular ale ako ste to mysleli s tym Javasciptom alebo php, to je jedno len aby to ficalo.
d.
| Kody vkladaj do znacky [code]. Ďuri |
| |
  |
 |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: Po 22.02.10 16:41 |   |
Podarilo sa mi nieco taketo:
Popis.
Ked oznacim jeden 1. checkbox ma sa dole zobrazit celkova cena 50
ked sa oznaci aj druhy 2. checkbox dole sa ma zobrazit celkova cena 60
Ma sa to celkovo scitat to co je oznacene. (50+10)
| kód: | <script type="text/javascript">
function moja-cena() {
cp.call(...);
}
</script>
<Form>
Vyber 1.:<input type="checkbox" checked name="zelene_tricko" value="nie" onChange="moja-cena(50)"><br>
Vyber 2.:<input type="checkbox" checked name="modre_tricko" value="nie" onChange="moja-cena(10)"><br>
</ Form><input type ... onChange="moja-cena()"> |
Nieco tomu chyba, poradi niekto? D. |
| |
  |
 |
juho
 Zablokovaný užívateľ
 Založený: 16.05.2007 Príspevky: 837
 | Zaslal: Po 22.02.10 19:52 |   |
absolutne nechapem co chces to co ma byt to cp.call(...); si robis srandu ci nevies to scitat ze .... ked chces posielat hodnotu pomocou parametrov tak opis funkcie ma mat nejaky identifikator parametra ale kludne ty mozes zabudnut na parametre a hodnoty davat do value. nejak:| kód: | <script type="text/javascript">
function moja_cena(t) {
document.getElementById('cena').value=parseInt((document.getElementById('cena').value*1)+(1*t.value));
}
</script>
<Form>
Vyber 1.:<input type="checkbox" checked name="zelene_tricko" value="50" onChange="moja_cena(this)"><br>
Vyber 2.:<input type="checkbox" checked name="modre_tricko" value="10" onChange="moja_cena(this)"><br>
</ Form><input id="cena" value="0"> | pomlcka v nazve funkcie nema co robit a treba to prerobit na to ze ci su checked alebo nie. |
| |
   |
 |
Ďuri
 Administrátor
 Založený: 11.08.2007 Príspevky: 3785 Bydlisko: Brno
 | Zaslal: Po 22.02.10 20:16 |   |
juho
Mas to zle.
elo
Ja ti tu fciu napisem. Budes mat len 2 checkboxy na celej stranke alebo ich bude viac? Ak by si chcel a mal by si niekolko skupin checkboxov na stranke, spravim ti kod, ktory bude moct tym checkboxom automaticky pridat onchange udalost, aj bude celkom efektivny. Len odpovedz na tu moju otazku. |
| |
    |
 |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: Po 22.02.10 21:17 |   |
Ide presne o tento formular:
| kód: | 0.<input type="checkbox" checked name="zaskrtnut" value="nie">
<br><br>
1. <select>
<option value="nie">Profi</option>
<option value="nie">Normal</option>
<option value="nie">Standard</option>
<option value="nie">Nie</option>
</select><br><br>
2. <select>
<option value="nie">Ano E</option>
<option value="nie">Ano C</option>
<option value="nie">Vyberte si!</option>
</select><br><br>
3. <select>
<option value="ano">Ano C</option>
<option value="ano">Ano E do 50</option>
<option value="ano">Ano E do 100</option>
<option value="nie">Ano do 200</option>
<option value="nie">Nie</option>
</select><br><br>
4.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
5.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
6.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
7.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
8.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
9.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
10.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
11.<input type="checkbox" checked name="..." value="nie" onChange="moja-cena polozky(50)">
<br><br>
12. <select multiple="option">
<option value="nie">A</option>
<option value="nie">B</option>
<option value="nie">C</option>
<option value="nie">D</option>
<option value="nie">E</option>
</select><br><br>
13. <select multiple="option">
<option value="nie">C</option>
<option value="nie">S</option>
<option value="nie">C</option>
<option value="nie">n</option>
</select><br><br>
Cena: ......... Eur |
Oznacenim cohokolvek sa ma zmenit cena dole. |
| |
  |
 |
Ďuri
 Administrátor
 Založený: 11.08.2007 Príspevky: 3785 Bydlisko: Brno
 | Zaslal: St 24.02.10 19:07 |   |
No, nieco som zbuchal. Niektore casti kodu su mozno trochu zlozito napisane, ale v zaujme toho, ze to nerobi blbosti napriklad ak refreshnes stranku alebo si niektore checkboxy vopred oznacis atributom checked. Popis skriptu - proste to hodis naspodok stranky, to je vsetko. Ta udalost onchange je pridana automaticky vsetkym input type="checkbox", ak by si mal checkbox, ktoremu nechces pridat to spravanie, ze bude ovplyvnovat pocitanie, pridas mu class="dontcount". Nezabudni pridat do kodu nejaky element s id="vysledok", v ktorom sa bude cena zobrazovat. Upozornenie - ak tento element bude input alebo textarea, vsade v kode zmen r.innerHTML na r.value. Inak tu cenu by si mal mat v atribute value, dufam, ze to nie je problem, ale neviem si predstavit, ako inak by to malo byt riesene - to scitanie musi aj tak koniec koncov prebehnut na serveri, kam sa posiela iba name a value.
| kód: | <script>
var r = document.getElementById('vysledok'), c = document.getElementsByTagName('input'), p = function(b, o)
{
r.innerHTML = b.checked ? parseFloat(r.innerHTML) + parseFloat(b.value) : (o ? parseFloat(r.innerHTML) - parseFloat(b.value) : r.innerHTML);
};
for (var i = 0; e = c[i]; i++)
{
if (e.type != 'checkbox' || e.className.match(/(^|\s)dontcount($|\s)/i))
{
continue;
}
e.onchange = function()
{
p(this, true);
};
p(e);
}
</script> | Na tie mena premennych moc nepozeraj, nahodne som vyberal pismena. Inak testoval som to len vo Firefoxe, ak by boli nejake problemy v inych prehliadacoch, napis. |
| |
    |
 |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: St 24.02.10 22:59 |   |
| kód: | 1.<input type="checkbox" checked name="10" value="10" id="vysledok">
2.<input type="checkbox" checked name="100" value="100" id="vysledok">
<script>
var r = document.getElementById('vysledok'), c = document.getElementsByTagName('input'), p = function(b, o)
{
r.value = b.checked ? parseFloat(r.value) + parseFloat(b.value) : (o ? parseFloat(r.value) - parseFloat(b.value) : r.value);
};
for (var i = 0; e = c[i]; i++)
{
if (e.type != 'checkbox' || e.className.match(/(^|\s)dontcount($|\s)/i))
{
continue;
}
e.onchange = function()
{
p(this, true);
};
p(e);
}
</script>
<input type="text" Id="vysledok"> |
takto som to upravil, len pre skusku som pouzil dva checkboxi, vlozil som value, cely script je na spodu stranky. Pridal som element input - tym padom som zmenil r.innerHTML na r.value. Skusam to vo Firefoxe.
Kde prosim robim chybu?
D. |
| |
  |
 |
Ďuri
 Administrátor
 Založený: 11.08.2007 Príspevky: 3785 Bydlisko: Brno
 | Zaslal: Št 25.02.10 11:38 |   |
Ten input#vysledok mas pod scriptom, to je problem.
Mas este druhu moznost, ak z nejakeho dovodu nechces dat <script> naspodok. Hned za <script> daj | kód: | | window.onload = function() { | a hned pred </script> daj |
| |
    |
 |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: Št 25.02.10 20:51 |   |
| kód: | <form>
1.<input type="checkbox" checked name="10" value="10" id="vysledok">
2.<input type="checkbox" checked name="100" value="100" id="vysledok">
</form>
<script>window.onload = function() {
var r = document.getElementById('vysledok'), c = document.getElementsByTagName('input'), p = function(b, o)
{
r.value = b.checked ? parseFloat(r.value) + parseFloat(b.value) : (o ? parseFloat(r.value) - parseFloat(b.value) : r.value);
};
for (var i = 0; e = c[i]; i++)
{
if (e.type != 'checkbox' || e.className.match(/(^|\s)dontcount($|\s)/i))
{
continue;
}
e.onchange = function()
{
p(this, true);
};
p(e);
}
}
</script> |
Vlozil som a nic to nepocita.
Ako na to?
D. |
| |
  |
 |
Ďuri
 Administrátor
 Založený: 11.08.2007 Príspevky: 3785 Bydlisko: Brno
 | Zaslal: Št 25.02.10 21:10 |   |
Nemozes mat dva elementy s id vysledok. Ten #vysledok daj elementu, kde sa ma zobrazovat cena, nie checkboxu. Checkboxom ziadne id netreba. |
| |
    |
 |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: Št 25.02.10 21:42 |   |
| kód: | <form>
1.<input type="checkbox" checked name="10" value="10">
2.<input type="checkbox" checked name="100" value="100">
</form>
<script>window.onload = function() {
var r = document.getElementById('vysledok'), c = document.getElementsByTagName('input'), p = function(b, o)
{
r.value = b.checked ? parseFloat(r.value) + parseFloat(b.value) : (o ? parseFloat(r.value) - parseFloat(b.value) : r.value);
};
for (var i = 0; e = c[i]; i++)
{
if (e.type != 'checkbox' || e.className.match(/(^|\s)dontcount($|\s)/i))
{
continue;
}
e.onchange = function()
{
p(this, true);
};
p(e);
}
}
<p id="vysledok"></p>
</script> |
Dva elementy s id vysledok som zmenil. Dal som elementu vysledok <p id="vysledok"></p> tam kde sa ma zobrazit cena. Checkbox - vymazal som tam id vysledok.
Nejde to aj tak.
Dakujem za trpezlivost. |
| |
  |
 |
Ďuri
 Administrátor
 Založený: 11.08.2007 Príspevky: 3785 Bydlisko: Brno
 |
Teraz tam mas <p> element, nie <input>, preto musis pouzivat r.innerHTML, nie r.value. Citaj pozornejsie moje prispevky. Okrem toho <p> mas v <script>e, musis to dat mimo <script>u. |
| |
    |
 |
elo
 Užívateľ
 Založený: 24.11.2009 Príspevky: 59
 | Zaslal: Pi 26.02.10 11:33 |   |
Dakujem.
| kód: | <form>
1.<input type="checkbox" checked name="10" value="10">
2.<input type="checkbox" checked name="100" value="100">
</form>
<script>window.onload = function() {
var r = document.getElementById('vysledok'), c = document.getElementsByTagName('input'), p = function(b, o)
{
r.innerHTML = b.checked ? parseFloat(r.innerHTML) + parseFloat(b.value) : (o ? parseFloat(r.innerHTML) - parseFloat(b.value) : r.innerHTML);
};
for (var i = 0; e = c[i]; i++)
{
if (e.type != 'checkbox' || e.className.match(/(^|\s)dontcount($|\s)/i))
{
continue;
}
e.onchange = function()
{
p(this, true);
};
p(e);
}
}
</script>
<p id="vysledok"></p> |
Element <p> som dal za script. r.value som zmenil na r.innerHTML. V scripte je pouzivane aj b.value, to som nemenil.
Uz to reaguje po oznaceni ale zobrazi "NaN" asi bude problem s nejakou premennou? Na oznacenie reaguje ale neviem ci to pocita alebo pouziva na scitanie premennu cislo. |
| |
  |
 |
|