после проверки некоторые значения флажка будут отображаться в текстовом поле и сравниваться с другими значениями текстового поля - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть флажок. Я хочу, чтобы при проверке какого-либо флажка общее значение отображалось в текстовом поле. Теперь проблема в том, что у меня есть другое текстовое поле. Кто-то вводит значение в это текстовое поле. После установки флажка итоговое значение будет сравниваться с ранее упомянутым значением текстового поля. и если добавленное значение флажка выходит за пределы указанного значения, флажок не будет установлен. вот мой код:

//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>

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Лучшим способом было бы не выполнять весь расчет каждый раз, а сохранять сумму и добавлять ее только при установленном флажке.

<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 голосов
/ 28 апреля 2011

Ваше утверждение вопроса не совсем понятно, но вот грубая модификация, основанная на моем понимании.Похоже, вы хотите снять флажок и не обновлять общую стоимость, если общая сумма превышает приблизительный бюджет.

Проверьте примерный вариант кода ниже и посмотрите, поможет ли это:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...