---
title: "text beroende på select & option"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/18221-text-beroende-på-select-option"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "tlee"
published: "2001-09-13T11:35:00.000Z"
updated: "2001-09-14T14:39:00.000Z"
replies: 7
views: 213
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/18221-text-beroende-på-select-option"
---

# text beroende på select & option

## #1 — tlee, 2001-09-13T11:35Z

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>&nbsp;</td>
</tr>
<TR>
<td width=300>Artikelnummer för ovanstående konfiguration är:</td><td> <input type=text name=txtArticleNr>&nbsp;</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

Permalänk: https://www.webforum.nu/p/18221

## #2 — tlee, 2001-09-13T14:47Z

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

Permalänk: https://www.webforum.nu/p/334500

## #3 — Jojoxx, 2001-09-13T14:58Z

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;
}
```

Permalänk: https://www.webforum.nu/p/334501

## #4 — tlee, 2001-09-14T07:53Z

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

Permalänk: https://www.webforum.nu/p/334502

## #5 — Jojoxx, 2001-09-14T11:07Z

```
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;
}
```

Permalänk: https://www.webforum.nu/p/334503

## #6 — tlee, 2001-09-14T11:16Z

nice... :)

jojoxx du är guld värd du!

/t

Permalänk: https://www.webforum.nu/p/334504

## #7 — tlee, 2001-09-14T11:52Z

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\]

Permalänk: https://www.webforum.nu/p/334505

## #8 — Jojoxx, 2001-09-14T14:39Z

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;
```

Permalänk: https://www.webforum.nu/p/334506

---

Tråden på webben: https://www.webforum.nu/amne/javascript/18221-text-beroende-på-select-option
