подсчет итого JS + php

akishev
На сайте с 21.05.2011
Offline
35
1626

Здравствуйте, прошу помочь с кодом:


<script type="text/javascript">
$('#out').click(function() {
$('input').keypress();
});

</script>

<span class="tds">Количество (только цифры)</span> <br/>
<input type="text" value='' class="input-text" name="kolvo" onkeyup='document.getElementById("result").innerText=this.value*<?=$cena?>;'>
</td>
</tr>

Счетчик довольно простой, умножает кол-во введенное пользователем, на цену которая забита в php:


$cena="1900";
$cena_opt="1500";

и все это выводится:

Итого: <span id='result'>0</span> <?=$volute;?>

Задача:

1) если человек вводит больше значение больше 2, то цену за одну шт. менять на $cena_opt (при заказе от 2-х шт. скидка)

2) чтобы вводились только положительные числа до 2 символов, т.е. максимум 99

uberchel
На сайте с 16.01.2010
Offline
70
#1

Как то так:


<?
$price = strip_tags($_GET['price']); //получаемая цена
$cena="1900";
$cena_opt="1500";
if (count($price) < 2 and count($price) == 0)
$price = $cena; else $price = $cena_opt;
?>
<span id='result'>0</span> <?=$volute;?>
<span class="tds">Количество (только цифры)</span> <br/>
<input type="text" value='' class="input-text" name="kolvo" onkeyup='document.getElementById("result").innerText=this.value + <?=$price?>;'>
</td>
</tr>

<script type="text/javascript">
$('#out').click(function() {
$('input').keypress();
});
$('.input-text').bind('keydown', function () {
if ($(this).val().length > 0) {
$(this).val($(this).val().substr(0, 1));
}
});
$('.input-text').bind('keyup', function () {
if ($(this).val().match(/[a-zа-я\-]/i))
$(this).val('');
});
</script>
akishev
На сайте с 21.05.2011
Offline
35
#2

uberchel, не правильно работает...

В Input вы написали "+", а нужно умножить, ввожу от 1 до 10000 и цена постоянно $cena

Может вы задачу не верно поняли, если человек вводит кол-во = 1, то цена будет

$cena, если человек ввел больше 1, то цена $cena_opt

Эта цена умножается на количество которое ввел пользователь.

И удаление букв не работает, если применять на другие поля, то там удаляются автоматически буквы, цифры остаются. А вот именно на это поле "количество" не реагирует.

uberchel
На сайте с 16.01.2010
Offline
70
#3
akishev:
uberchel, не правильно работает...
В Input вы написали "+", а нужно умножить, ввожу от 1 до 10000 и цена постоянно $cena

Может вы задачу не верно поняли, если человек вводит кол-во = 1, то цена будет
$cena, если человек ввел больше 1, то цена $cena_opt
Эта цена умножается на количество которое ввел пользователь.

И удаление букв не работает, если применять на другие поля, то там удаляются автоматически буквы, цифры остаются. А вот именно на это поле "количество" не реагирует.

Удаление букв и длина в 2 цифры работает на поле:

<input type="text" value='' class="input-text" name="kolvo" onkeyup='document.getElementById("result").innerText=this.value + <?=$price?>;'>

Далее по пхп скрипту мало что понятно, по задуманному вам нужно что бы при изменении поля пхп скрипт дописывал проценты, но вот в чем дела, у вас это не получится по 1 просто по 1 причине, пока не обновили страницу пхп скрипт будет выдавать уже сгенерированные данные, так что тут вам нужно воспользоватся аяксом, для гетинга данных, есликонечно подсчет не должен происходить при отправке формы.

akishev
На сайте с 21.05.2011
Offline
35
#4
uberchel:
Удаление букв и длина в 2 цифры работает на поле:
<input type="text" value='' class="input-text" name="kolvo" onkeyup='document.getElementById("result").innerText=this.value + <?=$price?>;'>


Далее по пхп скрипту мало что понятно, по задуманному вам нужно что бы при изменении поля пхп скрипт дописывал проценты, но вот в чем дела, у вас это не получится по 1 просто по 1 причине, пока не обновили страницу пхп скрипт будет выдавать уже сгенерированные данные, так что тут вам нужно воспользоватся аяксом, для гетинга данных, есликонечно подсчет не должен происходить при отправке формы.

Удаление не происходит в этом и проблема.

поставлю вопрос заново:

Если количество ввели 1, то Итого будет 1900

Если количество ввели 2 и больше, то Итого будет N*1500, где N - введенное количество.

uberchel
На сайте с 16.01.2010
Offline
70
#5

А вы линковали перед этим jquery? В прикреплении пример.

По второму вопросу я уже отписал, что непонятно как вы будите делать умножение с числом в пхп коде: реалтайм или же при отправке формы?

zip demo.zip
akishev
На сайте с 21.05.2011
Offline
35
#6
uberchel:
А вы линковали перед этим jquery? В прикреплении пример.
По второму вопросу я уже отписал, что непонятно как вы будите делать умножение с числом в пхп коде: реалтайм или же при отправке формы?

Реалтайм...

Я думал это просто, сделать чтобы при вводе 1 выдавало 1900

При вводе 2 и больше, умножалось 1500 на введенное число.

uberchel
На сайте с 16.01.2010
Offline
70
#7

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

zip index.zip
akishev
На сайте с 21.05.2011
Offline
35
#8
uberchel:
Вот, я скинул вам пример работы в реалтайме, загрузите на хостинг поддерживающий пхп или локальный сервер и посмотрите работу.

На отдельной странице все работает, когда вставляю все это в мою страницу, возвращает результат NaN 🤪

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#9

Держи зёма на нативном JS:


<?php
$priceOpt = 1500;
$priceAll = 1900;
?>
<html>
<head>
<title>Calculation</title>
<script type="text/javascript">
var priceOpt = <?php echo $priceOpt; ?>;
var priceAll = <?php echo $priceAll; ?>;
function calculatePrice(quantity)
{
quantity = parseInt(quantity);
if(quantity > 0)
{
if(quantity == 1)
{
price = priceAll;
}
else
{
price = quantity * priceOpt;
}
}
else
{
if(quantity == 0)
{
price = 0;
}
else
{
price = 'ХЗ';
}

}
document.calculator.price.value = price;
}
</script>
</head>
<body>
<form name="calculator" action="" method="post">
<label for="quantity">Количество</label><br />
<input type="text" name="quantity" value="0" />
<br />
<br />
<label for="price">Итоговая цена</label><br />
<input type="text" name="price" value="0" />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" name="button" value="Узнать цену" onclick="calculatePrice(this.form.quantity.value);"/>
</form>
</body>
</html>

PS. валидацию(разрешить ввод тока цифр) оставлю тебе;)

Подпись))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий