Javascript pomoč
5 naročnikov
5 naročnikov
Pozdravljeni,
imam enega ali več dropdown (select box-ov). Rad bi naredil SUM vseh izbranih value-ov.
Primer:
<select name="stm_time[]">
<option value="210">Ta je 210</option>
<option value="511" selected="selected">Ta je 511</option>
<option value="860">Ta je 860</option>
</select>
<select name="stm_time[]">
<option value="310">Ta je 310</option>
<option value="912" selected="selected">Ta je 912</option>
<option value="1260">Ta je 1260</option>
</select>
.
.
.
Lahko je eden ali več select box-ov.
Zdaj bi rad seštel vse izbrane vrednosti (ne text!). Torej 511 in 912 = 1423
Vem, da bi najprej moral nekako dobiti število select box-ov, nato bi verjetno moral čez vse izbrane in vmes seštevat in vrnit rezultat, vendar je sintaksa problem, ker je nisem potreboval kaj pogosto in sem se vedno znašel z rešitvami s spleta.
Na Googlu mi za zadetke prikazuje vse razen tega kar jaz potrebujem (verjetno neznam vpisat to kar iščem). Vesel bom tudi, če mi pošljete povezavo do podobnega primera.
Hvala in lp
11 odgovorov
mprose7, hvala za navodila a prosil bi za malce podrobnejšo razlago, ker nisem delal še z njim razen tega da sem vgradil en date picker :)
cimprej presaltaj vse skupaj na jQuery, bos imel OGROMNO lazej delo...
v tvojem primeru pride v postev en simple select izbranih opcij in preverjanje value-ja
sam bi dodal se class na select za lazjo izbiro... zakaj imas pa isto ime na obeh selectih?
http://jsfiddle.net/SffpH/
var vsota=0;
$('select').each(function() {
vsota+=+$(this).val();
});
alert('Vsota je '+vsota);
var vsota=0;
$('select option:selected').each(function() {
vsota+=+$(this).val();
});
alert('Vsota je '+vsota);
ce bi imel multiselect..mislim, da bi moglo delat
V tem primeru lahko za en dan izbereš da si delal več stvari za več različnih stroškovnih mest. Ker se dodajajo novi select-i prav tako preko javascripta sem mislil to na enak način tudi dokončati. Sedaj bi bilo potrebno samo dodati, da ti izpisuje koliko ur (iz registratorja) imaš še nedodeljenih v stroškovnih mestih, ki jih ravnokar izbiraš/dodajaš.
Saj veš da se ponavadi za že delujoče stvari nihče ne spravlja popravljat, ker na koncu lahko pride ven neupravičeno število porabljenih ur v primeru neuspeha iz prvega poizkusa.
Debugiranje pa lahko traja če še nisi delal z jQuery-jem.
Vem da jQuery pospešuje delo a če ga grem vpeljevat za vse nazaj bo to bolečina in bo trajalo. Trenutno nimam niti časa niti možnosti zaradi nepoznavanja.
EDIT: Vmes vidim že dva odgovora. Pa bo to delovalo če imamo še druge selecte pred tem? Kako omejim samo na select z id oz. name "stmtime" oz. "stmtime[]"?
oba predloga delujeta za vse selecte, torej ne za omenjena selecta... in seveda samo ce imas jquery nalozen
Uporabiš pač samo ta selektor:
$('select[name="stm_time[]"]')
To se da napisat tud v čistem JS, kar ti svetujem, ker je brezveze samo zaradi tega vključit 50KB dependency.