라디오 합산 하는데...
본문
라디오 버튼 #<?php echo $i?>_3 을 클릭하면
#e<?php echo $i?>_4 값의 합산값을 #h1_2 넣는것입니다.
잘 됩니다. 그런데
클릭할 때마다 합산되어 코드가 잘못된거 같습니다.
방법이 없을까요?
<script>
var sum = 0;
<?php
for ($i = 1, $wr=73; $i <=15; $i++, $wr+=7) {
?>
$('#<?php echo $i?>_3').on('click', function() {
$('#e<?php echo $i?>_4').each( function() {
sum += Number($(this).val());
});
$('#h1_2').val(sum.toFixed(2));
});
<?
}
?>
</script>
답변 3
예전에 중복체크 가능한 체크박스들 값을 합산 매긴 적이 있는데...
전 클릭이벤트로 하지않고 체인지 이벤트로 해서...
체크가 되면 체크된 value 값을 += 처리하고 체크가 해제되면 value 값을 -= 처리하는 식으로 구현했던 기억이 나네요...
// 이건 제가 짰던 코드 그대로 복붙한건데...
// 그대로 가져다가 마크업에 맞게 선택자 수정해서 써도.. 될지는 모르겠네요...;;
$(el).find('li').each(function(j, el){
var $check = $(this).find('input');
$check.on('change', function(){
if($(this).is(':checked'))
score += parseInt($(this).val());
else
score -= parseInt($(this).val());
});
});
`sum` 을 on click event 처리루틴 안쪽에 넣어보세요.
...
$('#<?php echo $i?>_3').on('click', function() {
var sum = 0;
...
$('#e<?php echo $i?>_4').each( function() { <---이 구문 자체가 용도가 틀린 것 같군요
each라는 것이 class='abc' 같이 하여 여러개가 있을 때 사용하는 것이지
#e1_4 라면 id를 나타내는 것일텐데 id라면 하나 밖에 없을테고 each를 사용하지는 않죠
for문을 없애고 1_3 ~ 15_3 은 class='a'
e1_4 ~ e15_4 는 class='b' 이렇게 부여한 후 아래처럼 하면 됩니다
$(funcrion(){
$('.a').on('click', function() {
sum=0;
$('.b').each( function() {
sum += Number($(this).val());
});
$('#h1_2').val(sum.toFixed(2));
});
});