2011-04-28 5 views
0

일부 체크 박스가 있습니다. 나는 체크 박스를 선택했을 때 총 값이 텍스트 상자에 표시 될 것입니다. 이제 문제는 다른 텍스트 상자가 있습니다. 누군가이 텍스트 상자에 값을 입력하십시오. 확인란을 선택하면 총 값이 앞서 언급 한 텍스트 상자 값과 비교됩니다. 추가 된 확인란 값이 해당 값의 한계를 초과하면 확인란이 선택되지 않습니다.일부 체크 박스 값을 체크 한 후 텍스트 상자에 값을 표시하고 다른 텍스트 상자 값과 비교합니다.

//autoSumCheckboxes.js 
function UpdateCost() { 
    var sum = 0; 
    var gn, elem; 
    for (i=0; i<5; i++) { 
    gn = 'budget'+i; 
    elem = document.getElementById(gn); 
    if (elem.checked == true) { sum += Number(elem.value); } 
    } 
    document.getElementById('totalcost').value = sum.toFixed(2); 
} 


//checkbox.php 
<head> 
<script type="text/javascript" src="autoSumCheckboxes.js"></script> 
</head> 

<body> 
<input name="approxbudget" id='approxbudget' type="text" class="ContactTextBox" value=""/>// put your budget 
<input type="checkbox" id='budget0' value="9.99" onclick="UpdateCost()">Game 1 (9.99)<br> 
<input type="checkbox" id='budget1' value="19.99" onclick="UpdateCost()">Game 2 (19.99)<br> 
<input type="checkbox" id='budget2' value="27.50" onclick="UpdateCost()">Game 3 (27.50)<br> 
<input type="checkbox" id='budget3' value="45.65" onclick="UpdateCost()">Game 4 (45.65)<br> 
<input type="checkbox" id='budget4' value="87.20" onclick="UpdateCost()">Game 5 (87.20)<br> 
<input type="text" id="totalcost" value="">// total budget 

</body> 

답변

1

때마다 전체 계산을하지만, 저장 합을 만 그것을 추가하지 않는 것입니다 가장 좋은 방법 확인란이 선택되어 있는지 확인하십시오.

<html> 
<head> 
<script> 

var sum = 0; 

function UpdateCost(clicked_element) 
{ 
    clicked_element_value = Number(clicked_element.value); 

    if(clicked_element.checked) 
    { 
     if(sum + clicked_element_value <= Number(document.getElementById('approxbudget').value)) 
     { 
      sum += clicked_element_value; 
      document.getElementById('totalcost').value = sum.toFixed(2); 
     } 
     else 
     { 
      clicked_element.checked = false; 
     } 
    } 
    else 
    { 
     sum -= clicked_element_value; 
     document.getElementById('totalcost').value = sum.toFixed(2); 
    } 
} 

</script> 
</head> 
<body> 
<input name="approxbudget" id='approxbudget' type="text" class="ContactTextBox" value=""/>// put your budget 
<input type="checkbox" id='budget0' value="9.99" onclick="UpdateCost(this)">Game 1 (9.99)<br> 
<input type="checkbox" id='budget1' value="19.99" onclick="UpdateCost(this)">Game 2 (19.99)<br> 
<input type="checkbox" id='budget2' value="27.50" onclick="UpdateCost(this)">Game 3 (27.50)<br> 
<input type="checkbox" id='budget3' value="45.65" onclick="UpdateCost(this)">Game 4 (45.65)<br> 
<input type="checkbox" id='budget4' value="87.20" onclick="UpdateCost(this)">Game 5 (87.20)<br> 
<input type="text" id="totalcost" value="">// total budget 
</body> 
</html> 
+0

@Moumita, 함수를 호출 할 때'this'를 추가 했습니까 ?? 게임 1 (9.99)
' – Mischa

+0

당신의 HTML에서 당신은해야만합니다 :'UpdateCost (this)' – Mischa

+0

많은 덕분에 ... 지금은 일하고 ... – Moumita

-1

귀하의 질문 문이 정확하게 명확하지 않다 그러나 여기 내 이해를 바탕으로 원유 수정의 : 여기 내 코드입니다. 확인란을 선택 취소하고 총액이 대략적인 예산을 초과하는 경우 총 비용을 업데이트하지 않으려는 것 같습니다.

아래 코드의 원유 변화를 확인하고 도움이된다면 참조 :

<body> 

<head> 
<script> 
//autoSumCheckboxes.js 
function UpdateCost() { 
    var sum = 0; 
    var gn, elem, approxBudget; 
    var approxBudget = document.getElementById('approxbudget').value * 1; 
    var isCostUpdated = true; 
    for (i=0; i<5; i++) { 
    gn = 'budget'+i; 
    elem = document.getElementById(gn); 
    if (elem.checked == true) { sum += Number(elem.value); } 

    if (sum > approxBudget) { 
     elem.checked = false; 
     isCostUpdated = false; 
    } 
    } 
    sum = 1 * sum.toFixed(2); 

    if (isCostUpdated) 
     document.getElementById('totalcost').value = sum; 
} 

</script> 
</head> 

<body> 
<input name="approxbudget" id='approxbudget' type="text" class="ContactTextBox" value=""/>// put your budget 
<input type="checkbox" id='budget0' value="9.99" onclick="UpdateCost()">Game 1 (9.99)<br> 
<input type="checkbox" id='budget1' value="19.99" onclick="UpdateCost()">Game 2 (19.99)<br> 
<input type="checkbox" id='budget2' value="27.50" onclick="UpdateCost()">Game 3 (27.50)<br> 
<input type="checkbox" id='budget3' value="45.65" onclick="UpdateCost()">Game 4 (45.65)<br> 
<input type="checkbox" id='budget4' value="87.20" onclick="UpdateCost()">Game 5 (87.20)<br> 
<input type="text" id="totalcost" value="">// total budget 

</body> 
+0

어떤 솔루션을 선택했는지 알 수 없습니다. 코드가 원래 검사 된 것과 다른 확인란의 선택을 취소 할 수 있습니다. – Mischa

+0

@mischa - 예, 성명서가 분명하지 않은 것처럼 완벽하지 못했습니다. 그래서 나는 그 말을 '원유'라고 말합니다! :) – sharmaprateek

관련 문제