Goedemiddag,

Probleem: Veel checkboxen met verschillende 'names' en ik moet die naam weten (zodat ik via de 'name' meer velden kan opvragen)

Wat wil ik bereiken: De 'name' is een ID waaraan een prijs hangt. Wanneer meerdere checkboxen zijn aangevinkt moet jQuery van al deze aangevinkte ID's de prijzen optellen en dit aan de gebruiker laten zien (dat laatste is geen probleem uiteraard).

Klein voorbeeld:
<input type="checkbox" name="32" value="checked">
<input type="checkbox" name="33" value="checked">
<input type="checkbox" name="34" value="checked">
<input type="checkbox" name="35" value="checked">


Het volgende heb ik al (dit is alleen om het ID te showen aan de gebruiker. Wanneer dat werkt werk ik het verder uit)
  $(document).ready(function(){
	 $("input:checkbox").change(function(){
		 val = $("input:checkbox").attr("name");
	 	 alert ( val );
	  });
  });


Ik hoop dat jullie mij verder kunnen helpen! Alvast bedankt

EDIT: Op dit moment geeft hij enkel de waarde van de bovenste checkbox... Kan natuurlijk ook dat wat ik wil helemaal niet gaat...
Werkt dit?


  $(document).ready(function(){
     val total = 0;
     $("input:checkbox").change(function(){
         $("input[type=checkbox][checked]").each(function(){
              total += $(this).attr("name");
         });
         alert(total);
      });
  }); 
$(document).ready(function(){
     $("input:checkbox").change(function(){
		 var total = 0;
         $("input:checkbox[checked]").each(function(){
              total += $("#bedrag_"+$(this).attr("name")).val();
			  //$(this).attr("name"));
         });
         alert(total);
     });
});


Zo werkt het alleen zet hij mij alle bedragen achter elkaar (hij ziet ze als string dus). Bezig met googlen maar misschien dat je het antwoord weet ? :)

$(document).ready(function(){
     $("input:checkbox").change(function(){
         var total = 0;
         $("input:checkbox[checked]").each(function(){
              total += parseInt($("#bedrag_"+$(this).attr("name")).val());
              //$(this).attr("name"));
         });
         alert(total);
     });


parseInt misschien?
parseInt helpt alleen pakt hij niets meer naar de komma of punt (beide geprobeerd)
Kan een aantal manieren verzinnen waardoor je het alsnog kan optellen, maar dat gaat mij te veel tijd kosten om het geheel uit te schrijven. Haal het bedrag op, splits het bedrag met het bedrag voor en achter de komma, tel de variabelen op, tel vervolgens het bedrag na de komma op en verwerk dat met het bedrag voor de komma. Op die manier kan het wel.
Raar dat javascript dat inderdaad niet in zich heeft... Ik ga verder stoeien! I.i.g. bedankt voor de tijd en moeite Chris!
Ik reken meestal zo in javascript:

<script type="text/javascript">

getal1 = '9.2';
getal2 = '4.8';

uitkomst = Number(getal1) + Number(getal2);
alert(uitkomst);

</script>


Dit werkt gewoon, ook met een punt.
P Widdershoven op 23/11/2010 14:29:05

Raar dat javascript dat inderdaad niet in zich heeft... Ik ga verder stoeien! I.i.g. bedankt voor de tijd en moeite Chris!


Nee. Wij houden gewoon een rare formatting aan. Zie de reactie boven mij.
Een 'getal' als 5,50 bestaat niet als getal, alleen als string.
Wil je 5,50 als getal hebben, dan heb je een float nodig: 5.50.
Wij gebruiken hier een afwijkende notatie van wat er geïmplementeerd is.
In de DB wordt de prijs opgeslagen met een . Dus: 5.5 e.d.
Ben er nog altijd niet uit helaas

[size=xsmall]Toevoeging op 23/11/2010 18:27:57:[/size]

Nou heb het werkend :)
$(document).ready(function(){
     $("input:checkbox").change(function(){
		 var total = 0;
		 var bedrag = 0;
		 var centen = 0;
         $("input:checkbox[checked]").each(function(){
			 bedrag = $("#bedrag_"+$(this).attr("name")).val().split(".");
			 if(bedrag[1] > 0){
			 	centen += parseInt(bedrag[1]);
			 }
             total += parseInt(bedrag[0]);
			 //$(this).attr("name"));
         });
		 if(centen > 0){
		 	total += centen/100;
		 }
		 $("#totaalbedrag").text(total.toFixed(2).replace(".",","));
     });
});

Reageren