Autor Zpráva
makovec
Profil
hezky den

lidicky, mam velky a neprekonatelny problem s necim co je zrejme naprosto trivialni. ale priznavam ze konstrukce javascriiptu je pro me (a zrejme pro vzdy zustane) velkou zahadou...

predstavte si nekolik selectu pod sebou. v kazdem nejake ciselne hodnoty (v mem pripade by to mely byt procenta po peti) .. a pod nima textovy input, kde by se mel zobrazovat aktualni soucet hodnot vybranych v jednotlivych selectech.

pomuzete nekdo prosim jak na to ? prosel jsem vsechny priklady na tomhle webu, goooglil jsem ale proste nic co by delalo presne tuhle vec jsem nenasel. a upravene skripty s puvodne trochu jinou funkcnosti mi proste nefungujou :o(

predem moc dekuji
makovec
Profil
tak jeste zmena.. to co chci tak nejak zhruba funguje tady:

<script type="text/javascript">
function secti() {
document.getElementById('vystup').value = document.getElementById('prvniselect').value+document.getElementById(' druhyselect').value;
}
</script>

<select name="prvniselect" onchange="secti()">
<option value="">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<br>
<select name="druhyselect" onchange="secti()">
<option value="">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<br><br>
<input name="nazev" type="text" id="vystup">

ovsem neni to to pravy javorovy. jednak (a to je spis kosmeticka vada) me desi to jak dlouha bude ona poskladana funkce (v mym pripade budu scitat hodnoty /prozatim/ minimalne z deseti selectu. a druhak, coz je vetsi problem, se mi to k hodnotam chova jako k retezcum, cili mi je nesecte, ale sklada je za sebe. a tady z toho nejsem moudrej...

pomuze nekdo ? jdu s tim zatim laborovat dal .o)
makovec
Profil
inu, vysledek mam ted takhle:

<script type="text/javascript">
function secti() {
var prvni=document.getElementById('prvniselect').value;
var druhy=document.getElementById('druhyselect').value;
document.getElementById('vystup').value = Number(prvni)+Number(druhy);
if(document.getElementById('vystup').value > 3){
alert("chyba");
}
}
</script>

<select name="prvniselect" onchange="secti()">
<option value="">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<br>
<select name="druhyselect" onchange="secti()">
<option value="">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<br><br>
<input name="nazev" type="text" id="vystup">

funguje to, dokonce to "zbuzeruje" ve chvili kdy je hodnota vyssi (ve finale kdyz bude soucet procent vetsi nez 100).. cili se muzu pochvalit .o)

kdyby ale nekoho napadlo jak to cele udelat elegantneji, tak bych byl moc rad

diky
peta
Profil
makovec
Mno, mas to tak, ze by to nemuselo fungovat.
Zkus zkouknout jakpsatweb - javascript - priklady - select zpusobi... Priklad, jak se pracuje se selectem spravne.
Elegantneji by to slo mozna resit uz jen primo pres formular, ktery tam pochopitelne nemas, takze dalsi nahoda, ze to funguje. Zkus si prepinat radionbutony se stejneym name bez formulare a pak pochopis, proc to rikam.
Chamurappi
Profil
Reaguji na petu:
Zkus si prepinat radionbutony se stejneym name bez formulare a pak pochopis, proc to rikam.
Zkus si to sám a pak pochopíš, proč to říkat nemáš.
peta
Profil
Ze by chybu opravili? potesujici :)
Chamurappi
Profil
Reaguji na petu:
Kdo? V kterém prohlížeči to podle tebe dělalo problémy?
peta
Profil
Chamurappi
mam pocit, ze ie6, ff1, ff1.5 , ale protoze od jiste doby to zasadne pisi s form, tak neumim rici konkretne
makovec
Profil
tak formular tam samozrejme je.. ono je to soucasti pomerne molochoidniho formulare na intranetu (pro HR souhrn planu, zlepseni a podobnych volovin ze strany vsech zamestnancu). priznavam ze me nenapadlo to resit az na urovni samotnyho formu. i kdyz me teda nenapada proc by to tak melo bejt lepsi. kdyz to vezmu selskou logikou, tak mi par selectu posila jakousi hodnotu, tu si jen v jine casti kodu sectu a vysledek posilam do inputu. naopak mi prave prislo pomerne logicky si u selectu volat pouze funkci. to kvuli zjednoduseni dalsich uprav. nebo alespon po letech psani PHP mi tohle prijde logicke (jestli to je nejspravnejsi cesta nedokazu objektivne posoudit .o)

mam ale jinej problem s timhle celym.. nevim proc, ale nefunguje mi to ve firefoxu a netusim proc. v opere, konqueroru, ie to jede bezchybne. nemuze bejt problem v tom ze je to cele v doctype html 4.01 strict ?
Chamurappi
Profil
Reaguji na petu:
Zmíněné prohlížeče mám. Ve všech to funguje. Nenapadá mě důvod, proč by nemělo.

Reaguji na makovec:
Metoda document.getElementById('prvniselect') v Mozille nenajde element s name="prvniselect". Přidej atribut id s totožnou hodnotou.
peta
Profil
makovec
id hleda id, to je logicke
Nicmene, kdyby sis dal poradit a upravil si priklad z jakpsatweb s tim selectem a ne opacny zpusom, resit nefunkcni kod...

Chamurappi
Zacinam te nemit rad :) 100% vim, ze to nefungovalo. A tehdy jsem resil proc a nekdo na foru mne upozornil, ze tam nemam formular.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0