이 문제를 해결할 수있는 방법은 다양합니다. 미리 들어가기 전에 클라이언트 측에서 '가격 계산'과 같은 작업을하지 마십시오. 즉, 가격을 계산하여 사용자를 표시 할 수 있지만 서버 측에서 실제 계산을 수행해야합니다 (고객이 양식 제출을 조정하고 조작 할 수 있으므로).
나는 체크 된 체크 박스의 결과를 집계하고 간단히 결과를 보여주는 간단한 예제를 만들었다. 이 코드를 용도에 맞게 조작 할 수있는 방법은 많이 있습니다. jQuery를 사용했지만이 문제에 대한 다른 흥미로운 옵션이 있습니다 (예를 들어 KnockoutJS를 확인하십시오).
<input type="checkbox" class="adjust one" data-value="1.00" id="so1" /> <label for="so1">$1.00</label> <br/>
<input type="checkbox" class="adjust two" data-value="2.00" id="so2" /> <label for="so2">$2.00</label><br/>
<input type="checkbox" class="adjust one" data-value="3.00" id="so3" /> <label for="so3">$3.00</label>
<p>
Total: <span class="total"></span>
</p>
그런 다음 jQuery 라이브러리와 함께 다음 JavaScript를 포함하고자합니다.
var total;
var calculateTotal = function() {
total = 0.0;
$('input[type="checkbox"]:checked').each(function() {
total += parseFloat($(this).data('value'));
});
$('.total').text(total);
};
$(document).ready(function() {
$('input[type="checkbox"]').live('change', function() {
calculateTotal();
});
calculateTotal(); //do it for initial price
});
calculateTotal()는 셀렉터에 일치하는 체크 박스 (타입 체크 박스의 입력)에 따라 총을 계산합니다 "확인". 그런 다음 각 체크 박스에서 데이터 속성 "값"을 가져 와서 해당 숫자를 기반으로 합계를 계산합니다. 문제의 논리는 다를 수 있지만 단순히 calculateTotal을 조정하면이 문제를 해결해야합니다. 마지막으로, calculateTotal 함수는 체크 박스가 '변경'될 때마다 (그리고 처음에는 한 번) 호출됩니다.
이 정보가 도움이 될 수 있기를 바랍니다. 다음은 JSFiddle 라이브 데모입니다.
'
\t \t \t '메일 수집 및 전화 응답을 모두 선택하면 ' 248 달러 대신 229 달러 할인가로 제공되지만, 착신 전환은 항상 15 달러입니다. – pikelet