X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Живой калькулятор
Axe_hb
Axe_hb
Topic Starter сообщение 9.9.2011, 20:48; Ответить: Axe_hb
Сообщение #1


Всем добрый вечер! Есть такая форма и обработчик:
<form action="" method="post">
<input type="checkbox" name="fff" value="200" class="calcbox">
<input type="checkbox" name="ffff" value="500" class="calcbox">
<input type="submit" value="Рассчитать стоимость" name="buttom">
</form>

[PHP]<?
$fff=$_POST['fff'];
$ffff=$_POST['ffff'];
$summa=$fff+$ffff;
echo $summa;
?>[/PHP]
вопрос: как сделать чтобы данные отправлялиь в обработчик сразу и значение суммы выводилось по мере заполнения формы, тоесть при каждом клике на чекбокс, без сабмита? тоесть по сути надо сделать "живой калькулятор"
буду крайне признателен. весь инет облазил)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 9.9.2011, 20:57; Ответить: alexdrob
Сообщение #2


а зачем вам для этого пхп? делайте просто на JS ну или если так хотите пхп, то юзайте AJAX но задержка будет такая, что он будет не совсем живой, скорей после пьянки :D
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 9.9.2011, 21:00; Ответить: Den1xxx
Сообщение #3


(Axe_hb @ 9.9.2011, 23:48) *
как сделать чтобы данные отправлялиь в обработчик сразу и значение суммы выводилось по мере заполнения формы, тоесть при каждом клике на чекбокс, без сабмита

Обычно данные суммируются яваскриптом, а потом готовое отправляется таки сабмитом.
Ваше решение нелогично -- нахрена дергать базу, если пользователь ещё не ввёл все данные?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 9.9.2011, 21:01; Ответить: alexdrob
Сообщение #4


(Den1xxx @ 10.9.2011, 00:00) *
нахрена дергать базу

по вашему php это СУБД? :D
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 9.9.2011, 21:07; Ответить: Den1xxx
Сообщение #5


(alexdrob @ 10.9.2011, 00:01) *
по вашему php это СУБД?

Я не смотрел код , только текст;) По-моему, зачем отправлять данные на сервер, если они там не сохраняются, значит БД где-то есть? Сейчас только посмотрел.
Если не нужно отправлять данные на сервер, а они туда отправляются, то тогда это совсем моветон какой-то(
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Axe_hb
Axe_hb
Topic Starter сообщение 9.9.2011, 21:54; Ответить: Axe_hb
Сообщение #6


(Den1xxx @ 10.9.2011, 00:00) *
Ваше решение нелогично -- нахрена дергать базу, если пользователь ещё не ввёл все данные?

и всё таки мне это нужно =) p.s. базы никакой нет, это же тупо калькулятор
(alexdrob @ 9.9.2011, 23:57) *
делайте просто на JS

вот об этом хотелось бы подробнее) я вобще 0 в js пока что, так что хорошо было бы всё написать на примере моего кода и объяснить хотябы структуру))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 9.9.2011, 22:12; Ответить: alexdrob
Сообщение #7


<script type="text/javascript">

var sum = 0

function calc(el)
{
sum += parseInt(el.checked ? el.value : -el.value)
document.getElementById('res').innerHTML = sum
}

</script>
<div id="res"></div>
<form action="" method="post">
<input type="checkbox" name="fff" value="200" class="calcbox" onclick="calc(this)">
<input type="checkbox" name="ffff" value="500" class="calcbox" onclick="calc(this)">
<input type="submit" value="Рассчитать стоимость" name="buttom">
</form>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Axe_hb
Axe_hb
Topic Starter сообщение 10.9.2011, 21:43; Ответить: Axe_hb
Сообщение #8


с этим разобрался =) спасибо) но попутно возникла проблема
у меня эти инпуты находятся в <span>-е чтобы стандартную галку поменять. Соответственно для инпута стоит display: none;
Если убрать спан, то работает, а со спаном нет =(
вот скрипт для смена вида:
[JS]<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(".niceCheck").mousedown(
/* при клике на чекбоксе меняем его вид и значение */
function() {

changeCheck(jQuery(this));
});
jQuery(".niceCheck").each(
/* при загрузке страницы нужно проверить какое значение имеет чекбокс и в соответствии с ним выставить вид */
function() {
changeCheckStart(jQuery(this));
});
});
function changeCheck(el)
/*
функция смены вида и значения чекбокса
el - span контейнер дял обычного чекбокса
input - чекбокс
*/
{
var el = el,
input = el.find("input").eq(0);
if(!input.attr("checked")) {
el.css("background-position","0 -17px");
input.attr("checked", true)
} else {
el.css("background-position","0 0");
input.attr("checked", false)
}
return true;
}
function changeCheckStart(el)
/*
если установлен атрибут checked, меняем вид чекбокса
*/
{
var el = el,
input = el.find("input").eq(0);
if(input.attr("checked")) {
el.css("background-position","0 -17px");
}
return true;
}
</script>[/JS]

вот ксс

[CSS]form {
padding: 50px;
}
.niceCheck {
width: 17px;
height: 17px;
display: inline-block;
cursor: pointer;
background: url(checkbox.png) no-repeat;
padding-right: 10px;
}
.niceCheck input {
display: none;[/CSS]

вот хтмл и ваш скрипт
[JS]<script type="text/javascript">

var sum = 0

function calc(el)
{
sum += parseInt(el.checked ? el.value : -el.value)
document.getElementById('res').innerHTML = sum
}

</script>[/JS]

<form action="" method="post">
<span class="niceCheck"><input type="checkbox" name="fff" value="200" class="calcbox" onclick="calc(this)"></span>
<input type="text" name="kol" size="4">
<span class="niceCheck"><input type="checkbox" name="ffff" value="500" class="calcbox" onclick="calc(this)"></span>
<input type="submit" value="Рассчитать стоимость" name="buttom">
</form>


да вот ещё тут текстовое поле есть, в которое тоже вводится число, которое должно умножаться на предыдущее значение (грубо говоря туда вводится "количество того, что по 200"))
черт пхп гораздо проще)))только неживой зараза) Хотелось бы чтоб это текстовое поле тоже работало.

Ну вот как сказал уже, без спанов всё отлично считает, а с ними никак...я думал может это как то связано с el (тк в скрипте который у меня есть уже имеется эта переменная(или что это???). Попробовал в вашем скрипте поменть el на co, не помогло
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Axe_hb
Axe_hb
Topic Starter сообщение 11.9.2011, 14:19; Ответить: Axe_hb
Сообщение #9


сделал так:
[JS]<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(".niceCheck").mousedown(
/* при клике на чекбоксе меняем его вид и значение */
function() {
changeCheck(jQuery(this));
});
jQuery(".niceCheck").each(
/* при загрузке страницы нужно проверить какое значение имеет чекбокс и в соответствии с ним выставить вид */
function() {
changeCheckStart(jQuery(this));
});
});
function changeCheck(el){
/*
функция смены вида и значения чекбокса
el - span контейнер дял обычного чекбокса
input - чекбокс
*/
var sum=0
var el = el,
input = el.find("input").eq(0);
if(!input.attr("checked")) {
el.css("background-position","0 -17px");
input.attr("checked", true)
sum += parseInt(el.checked ? el.value : -el.value)
document.getElementById('res').innerHTML = sum
}
else {
el.css("background-position","0 0");
input.attr("checked", false)
sum += parseInt(el.checked ? el.value : -el.value)
document.getElementById('res').innerHTML = sum
}
return true;
}[/JS]

но выводит NaN....почему? я уже s=0 во все возможные места вставлял, и даже спану value написал....всё равно либо ничего либо NaN
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Sapr
Sapr
сообщение 1.8.2012, 14:09; Ответить: Sapr
Сообщение #10


parseInt мож не везде
или же где то пустой инпут parseInt
селекторам по атребутах пройдись может конкретнее что укажи
да и можно на пхп но если у тебя расчет супер важный тогда аяксом надо отправлять
но лучше js всеже

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Покупаю живой трафик (любые источники)
3 ivanshargin 1596 9.10.2023, 9:55
автор: ivanshargin
Открытая тема (нет новых ответов) Кальку, точнее калькулятор в строительной тематике
Нужен PHP код
1 MihalychAIP 1083 20.4.2022, 2:04
автор: sergogogo
Открытая тема (нет новых ответов) Ищется программист. Создать калькулятор цен на сайте
JS | DLE
0 Mukis 1835 1.4.2019, 15:24
автор: Mukis
Открытая тема (нет новых ответов) [Разработка плагина] Калькулятор WordPress
Необходимо написать плагин под WordPress
3 mimoplus 3107 9.10.2017, 15:07
автор: Alexandr_js
Открытая тема (нет новых ответов) Реклама вконтакте! Живой подписчик мене 0,9 р
Реклама в группе "Деньги за репост"
0 Shempion8 1429 14.4.2017, 14:12
автор: Shempion8


 



RSS Текстовая версия Сейчас: 17.5.2025, 23:26
Дизайн