2014-01-13 2 views
0

이 내 코드입니다, 여기가 6 체크 박스가하고 6 번 호출과는 20해야보다 때마다이 10,10처럼, 내가 값을 전달하고이 두 값의 합을하지만 120 반환 어떻게이 문제를 해결할 수 문제?jQuery에서 체크 박스 값을 계산 하시겠습니까?

jQuery('.pricefield input').each(function() { 
    var checkedValues = jQuery('input:checkbox:checked').map(function() { 
    str=this.value; 
    source_str = str.substr(str.indexOf("#")); 
    keywords = source_str.split (/[\D,]+/); 
    val1=keywords[1]; 
    val2=keywords[2]; 
    sum+=parseInt(val1, 10)+parseInt(val2, 10); 
    alert(sum); 
    pricefield_both(sum); 
    }).get(); 
}); 
+0

후 한 번 더 위치를 필요로 내 오류가 이미 + 기호 –

+0

당신은 jsfiddle.net을 만들 수 있습니까 – mplungjan

+0

http : //jsfiddle.net/H3rLw/ –

답변

1

당신은 나중에 먹으 렴 #

Live Demo

$(function() { 
    $('.pricefield input').on("click",function() { 
    var sum=0; 
    $('input:checkbox:checked').each(function() { 
     var str=$(this).val().split("#")[1].split(","); 
     sum += (parseInt(str[0], 10) + parseInt(str[1], 10)); 
    }); 
    pricefield_both(sum); // assuming that function works 
    }); 
});  
+0

내 코드가 잘 작동하지만 확인란을 선택하면 매번 valeus를 합계하지 않고 이전 값으로 계속 합계를 계산합니다 –

+0

업데이트를 참조하십시오. – mplungjan

-1
keywords = source_str.split (/[\D,]+/); 
val1=keywords[1]; 
val2=keywords[2]; 
sum+=parseInt(val1, 10)+parseInt(val2, 10); 

이 코드는 좋지 않다!

다음과 같이 시도해보십시오!

keywords = source_str.split(/[\D,]+/); 
val1 = +keywords[1]; 
val2 = +keywords[2]; 
sum += val1 + val2; 

그리고 로컬 변수가 전역 적으로 액세스 할 수 없도록 변수를 먼저 정의하는 것이 좋습니다!

var str, source_str, keywords, val1, val2, sum; 

결과가 울부 짖는 소리입니다 : 당신은 올바른 인덱스보고되지

var str, source_str, keywords, val1, val2, sum = 0; 
jQuery('.pricefield input').each(function() { 
    var checkedValues = jQuery('input:checkbox:checked').map(function() { 
    str=this.value; 
    source_str = str.substr(str.indexOf("#")); 
    keywords = source_str.split (/[\D,]+/); 
    val1 = +keywords[1]; 
    val2 = +keywords[2]; 
    sum += val1 + val2; 
    alert(sum); 
    pricefield_both(sum); 
    }).get(); 
}); 
+0

좋은 점이있는 vars를 정의하는 것 외에도 parseInt의 문제점은 무엇입니까? regex가 정확하다고 가정 할 때 + keywords [1]과 parseInt (keywords [1], 10)의 동일한 동작은 – mplungjan

+0

으로 짧습니다. – jingyinggong

+0

하지만 "좋지 않아"라고 말했어. 제대로 작동하면 코드와 동일하게 작동합니다. 정규식이 올바른 값을 선택하지 않는다는 것을 알기 위해 다른 일이 일어나고 있습니다. 귀하의 코드에 구조적 변화가 보이지 않습니다. – mplungjan

관련 문제