tleeMedlem sedan mars 2001290 inlägg Tjena..
Jag har en sida som genereras ur en databas.
Den ser ut såhär.
<script lanugage=javascript>
<!--
function Calc(iMax){
var iResult=0
for(var i=1; i<=iMax; i++){
var selValue=eval("document.f_Conf.sel"+i+".options[document.f_Conf.sel"+i+".selectedIndex].value")
var prize=parseFloat(selValue.split(":"));
if(isNaN(prize)){ prize=0; }
iResult+=prize
}
document.f_Conf.txtResult.value = iResult;
}
-->
</script>
<form method=post action=show_conf.asp name=f_Conf>
<table border=0 cellpadding=2 cellspacing=2 width=600>
<tr vAlign=top>
<TD><TABLE border=1 cellpadding=5 cellspacing=0><TR>
<TD>Grundsystem, vpu, minne..</TD>
</TR>
<TR><TD>
<SELECT NAME=sel1 onChange=javascript:Calc('2');>
<OPTION SELECTED VALUE=>Välj CPU.</OPTION>
<OPTION VALUE=1240:CP766>Cpu Celeron 766MHz 128K</OPTION>
<OPTION VALUE=1500:CP800>Cpu Celeron 800MHz 128K</OPTION>
</SELECT>
</TD></TR>
<TR><TD>
<SELECT NAME=sel2 onChange=javascript:Calc('2');>
<OPTION SELECTED VALUE=>Välj Minne</OPTION>
<OPTION VALUE=1560:1283E>Dimm PC133 128Mb ECC 168p</OPTION>
<OPTION VALUE=495:128P4>Dimm PC133 128Mb 3,3v168p</OPTION>
<OPTION VALUE=1510:128PE>Dimm PC100 128Mb ECC 168p</OPTION>
</SELECT>
</TD></TR>
</TABLE></TD>
</TR>
</TABLE>
<table border=0 cellpadding=0 cellspacing=0 width=600>
<tr>
<td width=300>Nettopris för ovanstående konfiguration är:</td><td> <input type=text name=txtResult> <i> (exkl moms)</i> </td>
</tr>
<TR>
<td width=300>Artikelnummer för ovanstående konfiguration är:</td><td> <input type=text name=txtArticleNr> </td>
</tr>
</table>
</FORM>
Vad som sker är att document.f_Conf.txtResult visar pris beroende på vilka val jag väljer i de olika droplistorna.
Jag behöver ytterligare en funktion som ni kanske kan hjälpa till med..
document.f_Conf.txtArticleNr skall genereras och visa ett artikelnummer beroende på vilka val man gör.
Värdet i textfältet skall vara uppdelat på följande vis.
[X][X] ... osv osv
[] <-- detta motsvarar vilken <select> värdet tillhör
X <-- detta motsvarar vilken <option> som är vald i <select>
Om jag använder ovan kod som exempen så skall den alltså visa 2 siffor eftersom det finns 2 <select>.
Den första siffran kan vara antingen en etta eller tvåa eftersom det bara finns två <option> i document.f_Conf.sel1
Den andra siffran kan vara en etta,tvåa eller trea eftersom det finns 3 st <option> i den document.f_Conf.sel2
Om document.f_Conf.txtArticleNr innehåller '11' betyder det alltså att jag har valt en 'CPU Celeron 766 Mhz 128K' i den första droplistan(sel1)
och att jag valt 'Dimm PC133 128 MB EXX 168p' i den andra droplistan(sel2)
Är ni med på vad jag menar?
/t
tleeMedlem sedan mars 2001290 inlägg Jag kanske förklarar dåligt..
När sidan laddas innehåller document.f_Conf.txtArticleNr värdet '00', detta värde
baseras på antalet <select> det finns i formuläret, nämnligen 2.
Om jag sedan väljer "CPU Celeron 766 Mhz 128K' i den första <select>:en så skall värdet i document.f_Conf.txtArticleNr
ändras till '10', varför?, Jo eftersom document.f_Conf.sel1 har ändrats från 'Välj CPU' till 'Cpu Celeron 766MHz 128K', vilket är det första valet i den <select>en..
Om jag sedan ändrar document.f_Conf.sel2 till 'Dimm PC100 128Mb ECC 168p' så skall document.f_Conf.txtArticleNr ändras
till '13' eftersom det är den tredje <option>:en i den andra <selecten>..
Är ni med nu då ?
/t
------------------
the man with the golden bottle..
JojoxxMedlem sedan juni 20004 308 inlägg Jadå... det går ju bra upp till 9 produkter / droplista :) annars är det iofs bara att sätta avgränsare mellan värdena.
function Calc(iMax){
var iResult=0
for(var i=1; i<=iMax; i++){
var selValue=eval("document.f_Conf.sel"+i+".options[document.f_Conf.sel"+i+".selectedIndex].value")
var prize=parseFloat(selValue.split(":"));
if(isNaN(prize)){ prize=0; }
iResult+=prize
}
document.f_Conf.txtResult.value = iResult;
document.f_Conf.txtArticleNr.value = ""+document.f_Conf.sel1.selectedIndex + document.f_Conf.sel2.selectedIndex;
}
------------------
/ J
tleeMedlem sedan mars 2001290 inlägg snyggt..:)
en sista grej bara :)
<script lanugage=javascript>
<!--
function Calc(iMax){
var iResult=0
for(var i=1; i<=iMax; i++){
var selValue=eval("document.f_Conf.sel"+i+".options[document.f_Conf.sel"+i+".selectedIndex].value")
var prize=parseFloat(selValue.split(":"));
if(isNaN(prize)){ prize=0; }
iResult+=prize
}
document.f_Conf.txtResult.value = iResult;
document.f_Conf.txtArticleNr.value = ""+document.f_Conf.sel1.selectedIndex + document.f_Conf.sel2.selectedIndex;
}
-->
</script>
kan man göra så att han lägger ihop alla <select> beroende på hur stor iMax är? Jag antar att det skall till en extra loop..?
imax = antal <select> i forumläret..
/t
JojoxxMedlem sedan juni 20004 308 inlägg function Calc(iMax){
var iResult=0,iArt="",i,selValue,prize;
for(i=1; i<=iMax; i++){
selValue=eval("document.f_Conf.sel"+i+".options[document.f_Conf.sel"+i+".selectedIndex].value")
iArt+=eval("document.f_Conf.sel"+i+".selectedIndex");
prize=parseFloat(selValue.split(":"));
if(isNaN(prize)){ prize=0; }
iResult+=prize
}
document.f_Conf.txtResult.value = iResult;
document.f_Conf.txtArticleNr.value = iArt;
}
------------------
/ J
tleeMedlem sedan mars 2001290 inlägg nice... :)
jojoxx du är guld värd du!
/t
------------------
the man with the golden bottle..
tleeMedlem sedan mars 2001290 inlägg hehe.. ytterligare en grej..
följande rad har kommit till..
<td width=300>Med <input type=text name=txtPercent size=2 OnChange=javascript:Calc(<%=iMax%> );> % i påslag blir det:</td><td><input type=text name=txtResultPercent><i> (exkl moms)</i> </td>
Om jag skriver t.ex 5 i txtPercent fältet så skall txtPercentResult multipliceras med 1.05
och då har priset ökat med 5 procent.. jag har försökt mig på detta..
se nedan kod.
<script lanugage=javascript>
<!--
function Calc(iMax){
var iResult=0,iArt="",i,selValue,prize, intPercent;
for(i=1; i<=iMax; i++){
selValue=eval("document.f_Conf.sel"+i+".options[document.f_Conf.sel"+i+".selectedIndex].value")
iArt+=eval("document.f_Conf.sel"+i+".selectedIndex");
prize=parseFloat(selValue.split(":"));
if(isNaN(prize)){ prize=0; }
iResult+=prize
}
document.f_Conf.txtResult.value = iResult;
document.f_Conf.txtArticleNr.value = iArt;
intPercent = document.f_Conf.txtPercent.value;
if (intPercent = "")
{
intPercent=1;
}
else
{
intPercent = intPercent / 100 + 1;
}
document.f_Conf.txtResultPercent.value = intPercent * document.f_Conf.txtResult.value;
}
-->
</script>
funkar ju inte så jättebra.. vad kan vara fel nudå ? :)
/t
[Redigerat av tlee den 14 sep 2001]
JojoxxMedlem sedan juni 20004 308 inlägg value lämnar ett sträng-värde och går inte att räkna med rakt av.
intPercent = parseFloat(document.f_Conf.txtPercent.value);
if (isNaN(intPercent)) {
intPercent=100;
} else {
intPercent += 100;
}
document.f_Conf.txtResultPercent.value = (intPercent * parseFloat(document.f_Conf.txtResult.value))/100;
------------------
/ J