[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Складывание значений по чекбоксам
noo
Друзья, подскажите как сделать что-то, вроде простейшего тарифного калькулятора.
Гуглил, но нашел какие-то сложные js-штуки, а надо совсем простой скрипт и вообще хочу сам принцип понять.

Что нужно?
есть чекбоксы
<input type="checkbox" name="checks[]" value="1">
<input type="checkbox" name="checks[]" value="2"> и т.д.
Каждому value соответствует своя цена. Суммарную цену при клацании по чекбоксам нужно выводить в текстовом инпуте.

Как реализовать? Буду очень благодарен.



Спустя 52 минуты, 40 секунд (2.07.2010 - 17:43) vagrand написал(а):

<input type="checkbox" name="checks[]" value="1" onClick='changePrice(this);'>
<input
type="checkbox" name="checks[]" value="2" onClick='changePrice(this);'>

<input
type='text' id='totalPriceField'>



<script>
function changePrice(checkBox)
{
if (checkBox.checked == true) {
document.getElementById('totalPriceField').value = parseInt(document.getElementById('totalPriceField').value) + parseInt(checkBox.value);
} else {
document.getElementById('totalPriceField').value = parseInt(document.getElementById('totalPriceField').value) - parseInt(checkBox.value);
}
}

</script>


Благодарность можешь на карме отобразить.

Спустя 4 часа, 21 минута, 42 секунды (2.07.2010 - 22:05) noo написал(а):
Спасибо, уже отразил)

Но, у меня пока в форме для счета отображается NaN

Объясни, что не так сделал?
До формы вставил код скрипта, потом
 onClick='changePrice(переменная_стоимости);'>
вроде такого:
onClick='changePrice(1.5);'>

Это правильно?

Спустя 3 часа, 46 минут, 4 секунды (3.07.2010 - 01:51) sergeiss написал(а):
Нет, не правильно! Тебе написали полный код, не надо там изменений вносить.

Величина будет взята автоматически из текстового поля, расположенного (в приведенном примере), ниже чек-боксов.

Спустя 8 часов, 43 минуты, 46 секунд (3.07.2010 - 10:35) noo написал(а):
Цитата (sergeiss @ 2.07.2010 - 22:51)
Величина будет взята автоматически из текстового поля, расположенного (в приведенном примере), ниже чек-боксов.

Так величина должна там отображаться.
Я не понимаю, откуда будут браться значения для складывания?

эти значения не равны value, в том-то и дело. Value чекбоксовские - это id услуг, а куда стоимость-то передавать?

Спустя 3 часа, 17 минут, 54 секунды (3.07.2010 - 13:52) vagrand написал(а):
Цитата
Каждому value соответствует своя цена. Суммарную цену при клацании по чекбоксам нужно выводить в текстовом инпуте.


Вот жеж вы пишете что соответствует. Значит нужно конкретизировать.

Если у вас в value только ID услуг то скрипт можно модифицировать следующим образом:


<input type="checkbox" name="checks[]" value="some_id" onClick='changePrice(this, 15.2);'>
<input
type="checkbox" name="checks[]" value="some_id" onClick='changePrice(this, 23.44);'>

<input
type='text' id='totalPriceField'>



<script>
function changePrice(checkBox, price)
{
if (checkBox.checked == true) {
document.getElementById('totalPriceField').value = parseFloat(document.getElementById('totalPriceField').value) + parseFloat(price);
} else {
document.getElementById('totalPriceField').value = parseFloat(document.getElementById('totalPriceField').value) - parseFloat(price);
}
}

</script>

Спустя 10 часов, 19 минут, 52 секунды (4.07.2010 - 00:12) noo написал(а):
Я прошу прощения, но делаю все, как указано выше и у меня все равно выскакивает NaN.
Чтобы проверить даже создал отдельный html-файл с кодом:
 <script>
function
changePrice(checkBox, price)
{
if (checkBox.checked == true) {
document.getElementById('totalPriceField').value = parseFloat(document.getElementById('totalPriceField').value) + parseFloat(price);
} else {
document.getElementById('totalPriceField').value = parseFloat(document.getElementById('totalPriceField').value) - parseFloat(price);
}
}

</script>
<form>
<input
type="checkbox" name="checks[]" value="1" onClick='changePrice(this, 15.2);'>
<input
type="checkbox" name="checks[]" value="2" onClick='changePrice(this, 11);'>
<input
type="checkbox" name="checks[]" value="2" onClick='changePrice(this, 1);'>
<input
type="text" disabled style="width:50px" id="totalPriceField">
<input
name="yes" type="submit" value="Оплатить" /> </form>

вроде бы ничего не мешает, но не работает.

Спустя 28 минут, 43 секунды (4.07.2010 - 00:41) linker написал(а):
В
<input type="text" disabled style="width:50px" id="totalPriceField">
добавьте value="0", вот так:
<input type="text" disabled style="width:50px" id="totalPriceField" value="0">

Спустя 18 минут, 56 секунд (4.07.2010 - 01:00) noo написал(а):
linker, vagrand, спасибо большое. Теперь все отлично.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.