Avatar billede ballegaarden Nybegynder
21. oktober 2008 - 11:08 Der er 18 kommentarer og
1 løsning

Et lille java regnestykke

Jeg har brug for hjælp til et lille java regnestykke.
Jeg mener ikke at det kan lade sig gøre i html???

Jeg har en boks hvor der kan skrives et antal.(f.eks."3")stk.
Så har jeg en fast pris stående.(f.eks. "200,50")kr.
Så har jeg en boks hvor udregningen skal fremkomme i. ("601,50")kr.
Dem har jeg 4 af og så har jeg en "ialt" boks, hvor det samlede beløb skal fremkomme i.

Er der en herinde der kan hjælpe mig med denne opgave.
Mit link til er: http://www.ballegaarden.com/kurv.html
Avatar billede majbom Novice
21. oktober 2008 - 11:26 #1
<script type="text/javascript">
  function calc(value, id){
  var price = document.getElementById(id+'_price').value;
  var totalElm = document.getElementById(id+'_total');

  totalElm.value = price*value;
}
</script>

<input type="text" id="product1" onkeyup="calc(this.value, this.id)">
<input type="hidden" id="product1_price" value="200">
<input type="text" id="product1_total" readonly>

eksempel: http://majbom.com/testarea/JavaScript/js4.htm
Avatar billede ballegaarden Nybegynder
21. oktober 2008 - 12:06 #2
Den virker fint, hvis det er tal uden komma.
Dette virker ikke rigtigt, for jeg skal bruge (decimaler) f.eks. 200,50.
Skriver jeg et tal, fremkommer der NaN i slut boksen.
Jeg mangler også den boks med det samlede beløb.
Avatar billede majbom Novice
21. oktober 2008 - 13:01 #3
http://majbom.com/testarea/JavaScript/js4.htm

jeg har ikke arbejdet med decimaler før, og umiddelbart ser det ud til at du skal have fat i et script til at arbejde med "danske tal".

men du kan skrive prisen med . i stedet; 200.5, så virker det, men så skriver den også total med . i stedet for ,
Avatar billede w13 Novice
21. oktober 2008 - 13:02 #4
I øvrigt er Java og JavaScript to vidt forskellige ting. ;)
Avatar billede majbom Novice
21. oktober 2008 - 13:14 #5
hehe, ja den havde jeg slet ikke set... :)
Avatar billede ballegaarden Nybegynder
21. oktober 2008 - 14:03 #6
Det er åbenbart svære end jeg troede, for hvis du skriver f.eks. 3 i de første felter kommer der helt vilde decimaler ud af det i tre af dem. Mærkeligt at scriptet ikke kan finde ud af lægge andre tal end -,5 sammen ?
Avatar billede ballegaarden Nybegynder
21. oktober 2008 - 14:17 #7
Nu har jeg ellers søgt alle vejne efter noget der virkede, men så søgte jeg efter noget dansk script, så fandt jeg lige hvad jeg søgte og så enda herinde igennem google: http://www.eksperten.dk/spm/625583

Det hjalp lige at du skrev "umiddelbart ser det ud til at du skal have fat i et script til at arbejde med *danske tal*"
Avatar billede majbom Novice
21. oktober 2008 - 14:26 #8
ja okay, der er jo med komma-problemet og det hele...
Avatar billede ballegaarden Nybegynder
21. oktober 2008 - 17:36 #9
Ja og fik jeg criptet til at virke, så er det så bare galt med formularen på siden - øv
Avatar billede olebole Juniormester
21. oktober 2008 - 18:46 #10
<ole>

<script type="text/javascript">
  function calc(value, id){
  var price = document.getElementById(id+'_price').value.replace(",", ".")*1;
  var totalElm = document.getElementById(id+'_total');

  totalElm.value = (price*value).replace(".", ",");
}
</script>

<input type="text" id="product1" onkeyup="calc(this.value, this.id)">
<input type="hidden" id="product1_price" value="200">
<input type="text" id="product1_total" readonly>

/mvh
</bole>
Avatar billede olebole Juniormester
21. oktober 2008 - 18:48 #11
Njaahhh ... næsten  =)

<script type="text/javascript">
  function calc(value, id){
  var price = document.getElementById(id+'_price').value.replace(",", ".")*1;
  var totalElm = document.getElementById(id+'_total');
  value = value.replace(",", ".")*1;
  totalElm.value = (price*value).replace(".", ",");
}
</script>
Avatar billede majbom Novice
21. oktober 2008 - 18:52 #12
-> ole - ja det var jo unægtelig rimelig simpelt, ift roenvings forslag i tråden, selvom det helt sikkert er et godt script, virker det lidt som overkill i denne sammenhæng...
Avatar billede olebole Juniormester
21. oktober 2008 - 18:58 #13
roenvings gør også andre ting. Dette er en quick'n'dirty version  =)
Avatar billede olebole Juniormester
21. oktober 2008 - 19:02 #14
Det er ikke testet, men burde virke - måske, med én undtagelse. Man burde faktisk skrive den sidste linje som:
    totalElm.value = String(price*value).replace(".", ",");

- men om der bliver kastet en fejl uden type casting med 'String' (som der strengt taget burde), er jeg ikke sikker på  =)
Avatar billede ballegaarden Nybegynder
21. oktober 2008 - 21:56 #15
Jeg vil lige meddele i denne tråd, da jeg troede jeg havde et problem med min formular.
Scriptet fra tråden: http://www.eksperten.dk/spm/625583
virker supert, men vil man have at beløbene skal kunne sendes pr mail via sin formular, skal der ikke stå disabled="disabled" om boksen men readonly="readonly".
Avatar billede olebole Juniormester
21. oktober 2008 - 22:09 #16
Ja, det er klart, du ikke kan sende et disabled felt  =)
Avatar billede roenving Novice
22. oktober 2008 - 16:37 #17
-- men du stoler vel heller ikke på, hvad du beregner med javascript, så du skal alligevel beregne det igen serverside !-)

-- det vil ikke tage et helt minut at ændre værdien i samtlige ialt-felter til 35 øre lige før man trykker på submit, så brug værdien i de felter, hvor brugeren i virkeligheden indskriver data !o]
Avatar billede roenving Novice
22. oktober 2008 - 16:39 #18
-- og det er en supergod funktion at bruge for at gøre det nemmere for brugeren, men _alt_ skal beregnes og checkes på serveren ...
Avatar billede olebole Juniormester
22. oktober 2008 - 16:46 #19
- sæ'føl'somt!  ;o)
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