Avatar billede wolstrup Nybegynder
28. april 2008 - 13:01 Der er 5 kommentarer

sammenlæg med antal

Skal bruge en funktion som ligger nogle id´er fra inputs sammen. Det intastede i feltet skal ganges op med id, så hvis man f.eks. taster 2 i "id_1", skal resultatet fra det felt blive 400. Der skal så være en div eller lign. som udskriver total for alle felter sammenlagt. 

<input name="id_1" id="200">
<input name="id_2" id="300">
Avatar billede roenving Novice
28. april 2008 - 13:14 #1
-- du må ikke bruge id til den slags, for et id skal for det første starte med et bogstav og for det andet være unikt (hvilket jeg sagtens kan forestille mig, at der vil kunne være problemer med !-)

-- men måske kan du bruge title-propertyen, det giver også mening, at den vises, når man fører musen henover ...

-- og hvad skal der ske med indtastninger, der ikke er tal, eller er indtastet som decimal-tal med komma  ?-)
Avatar billede wolstrup Nybegynder
28. april 2008 - 13:24 #2
Lyder som en plan! Men hvordan tryller man så det frem? :-)

Fjerner komma og punktum før værdien indsættes, så det skal der ikke tages højde for.
Avatar billede roenving Novice
28. april 2008 - 13:52 #3
F.eks.

<form>
<input name="id_1" title="200" onchange="calcForm(this.form);">
<input name="id_2" title="300" onchange="calcForm(this.form);">

...

<input name="sum">
</form>

<script type="text/javascript">
function calcForm(f){
  var e = f.elements, val = 0;
  for(i=0,im=e.length;im>i;i++){
    val += e[i].type=="text"&&e[i].name!="sum" ? e[i].value*e[i].title : 0
  }
  f.sum.value = val;
}
</script>
Avatar billede wolstrup Nybegynder
29. april 2008 - 08:06 #4
Mange tak. Men nu har jeg jo dummet mig her. Har jo strippet som herunder.

120,25 > 12025
234,75 > 23475

Men hvordan får jeg så smidt komma og punktum i slutresultatet igen?
Avatar billede roenving Novice
29. april 2008 - 13:32 #5
...
  f.sum.value = val/100;
}

-- hvis du også skal have præcis to decimaler, skal der arbejdes lidt mere, f.eks. med denne:

function formatNum(t){
    if((""+t).length>(""+t).indexOf(".")+3)t=(Math.round(t*100))/100;
    if((""+t).indexOf(".")==-1)t=t+".00";
    if((""+t).indexOf(".")+2==(""+t).length)t=t+"0";
    return t;
}

-- og så bliver det:

...
  f.sum.value = formatNum(val/100);
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester