Avatar billede joeblack Nybegynder
13. marts 2009 - 19:25 Der er 2 kommentarer og
1 løsning

Beregn alle valgte checkboxe

Hej Eksperter !

Nu har jeg prøvet og prøvet, men kan ikk'....

Jeg har en række checkboxe (60 stk), alle med forskellige navne.

Her et lille udpluk:

<input type="checkbox" name="daek1" onClick="this.form.total.value=CheckChoice(this);" value="12.23">

<input type="checkbox" name="daek2" onClick="this.form.total.value=CheckChoice(this);" value="78.13">

<input type="checkbox" name="faelg1" onClick="this.form.total.value=CheckChoice(this);" value="12.23">

<input type="checkbox" name="faelg2" onClick="this.form.total.value=CheckChoice(this);" value="12.23">
<input type="text" name="total" readonly onFocus="this.blur();">

Og det script, der kaldes:

function CheckChoice(whichbox)
{
with (whichbox.form)
{
//Handle differently, depending on type of input box.

if (whichbox.checked == false)
{ hiddentotal.value = eval(hiddentotal.value) - eval(whichbox.value); }
else { hiddentotal.value = eval(hiddentotal.value) + eval(whichbox.value); }


//Ensure the total never goes negative
if (hiddentotal.value < 0)
{
InitForm();
}

//Now, return with formatted total:
return(formatCurrency(hiddentotal.value));
}
}

//Define function to format a value as currency:
function formatCurrency(num)
{
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
pence = num%100;
num = Math.floor(num/100).toString();
if(pence<10)
pence = "0" + pence;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+'.'+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + 'Kr. ' + num + ',' + pence);
}

//Define function to init the form on reload:
function InitForm()
{
//Reset the displayed total on form:
document.myform.total.value='Kr. 0';
document.myform.hiddentotal.value=0;

//Set all checkboxes to unchecked:
for (xx=0; xx < document.myform.elements.length; xx++)
{
document.myform.elements[xx].checked = false;
}

}

Min udfordring er, at kun checkboxe, som jeg klikker på, tages med i beregning (som derudover virker perfekt). Nogle af checkboxene afcheckes automatisk, når andre checkboxe checkes - deres værdier kommer ikke med i beregningen.

Kan man forestille sig at ovennævnte scripts kan tilrettes, så det løber igennem alle checkboxe (kun de 60 - formen har også andre, som ikke skal tages med i beregningen) ?
Avatar billede jhe-ting Nybegynder
18. marts 2009 - 14:10 #1
Man kan forestille sig meget, og for det meste kan man hvad man vil. Kan du vise lidt mere kode så det bliver mere klart?

Du skriver 'afcheckes automatisk', men det ses ikke i den kode du viser. Den kode der håndterer den 'automatik' vil være et naturligt sted at starte.

Hvilke andre checkboxe er det der ikke skal med i beregningen? Det er nødvendigt at kunne skelne mellem dem. Hvordan ser de andre ud?

Med tilstrækkelig information kan hjælp bedre ydes.

Har du et link til koden på nettet, eller kan du vise den her?
Avatar billede joeblack Nybegynder
18. marts 2009 - 17:29 #2
Den er klaret ved en anden serverside løsning. Der var så mange værdier der skulle beregnes, at jeg i stedet valgte at gøre det på serveren.

Ellers tak for hjælpen. Læg et svar - du have point for interessen.
Avatar billede jhe-ting Nybegynder
18. august 2010 - 13:20 #3
Den var så gået i glemmebogen :)
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

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