Пресловутый калькулятор(
Пришёл к следующему:
<html> <head> <style> table{ background: #FFF7BF; border-spacing: 0px; border: 1px solid #f00; } table td{ padding: 10px; border: 1px solid #f00; } </style> </head> <body> <table> <!--Шапка таблицы************************************ **************************--> <tr> <td>Наименование работ</td> <td>Цена за кг.</td> <td>Колличество кг.</td> <td>Сумма</td> </tr> <!--Шапка таблицы************************************ **************************--> <tr> <script> function ChangeOnFly() { var kg = document.getElementById('input_kg').value; var tarif = document.getElementById('tarif_obl').value; document.getElementById('dostavka').firstChild.nod eValue = kg*tarif; } </script> <td>Картофель</td> <td>50<input type="hidden" id="tarif_obl" value="50"></td> <td><input id="input_kg" type="text" onFocus="this.select();" onKeyUp="ChangeOnFly();" name=kg></td> <td><span id="dostavka">0</span></td> </tr> <!--************************************************** *************************--> </table> </body> </html> Теперь собственно сам вопрос. Нужно сделать много полей с разными овощами. Не могу врубиться каким образом ( Кто чем может :) |
<input class="ovosch_kg" type="text" onFocus="this.select();" onKeyUp="ChangeOnFly(this);" name=kartoplya> 1. в Namе - писать овощ, а не кг - я так понимаю, что они все в кг 2. В скрипте Вам нужен список, точнее объект со списком соответствия овощ - cтоимость за килограмм. типо
obj = {
kartoplya : 22,
konoplya : 222
}
По onKeyUp функция ChangeOnFly(this) должна считывает по this - value и name текущего инпут, лезет в список и считывает стоимость за кг, перемножает стоимость на кг, складывает в другой объект итоговых стоимостей по овощам, которые суммируются по итоговой сумме и выводятся в 'итого:' (при вводе в очередной инпут) . |
Цитата:
|
Кстати, интерфейс типовой тележки заказов в сущности ничем не отличается от задачи автора темы. Ему только вместо товаров - количество с одной л которых умножается на цену и выводится в следующей колонке таблицы, - надо применить виды овощей или виды услуг.
|
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.js"></script>
<meta charset="utf-8"/>
<style>
table{
background: #FFF7BF;
border-spacing: 0px;
border: 1px solid #f00;
}
table td{
padding: 10px;
border: 1px solid #f00;
}
</style>
</head>
<body>
<table>
<!--Шапка таблицы************************************ **************************-->
<tr>
<td>Наименование работ</td>
<td>Цена за кг.</td>
<td>Колличество кг.</td>
<td>Сумма</td>
</tr>
<!--Шапка таблицы************************************ **************************-->
<tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">50</span>
<input name="price" type="hidden" value="50">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr><tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">30</span>
<input name="price" type="hidden" value="30">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr><tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">90</span>
<input name="price" type="hidden" value="90">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr><tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">70</span>
<input name="price" type="hidden" value="70">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr>
<!--************************************************** *************************-->
</table>
<script>
$('.input_kg').on('keyup',function(){
var kg = $(this).val().replace (/\D/gi, '').replace (/^0+/, '');
$(this).val(kg);
var priceKg = $(this).closest("tr").find(".price_kg input[name=price]").val();
var result = Math.round(kg * priceKg);
var priceKg = $(this).closest("tr").find(".dostavka").text(result);
});
</script>
</body>
</html>
|
Ну и как теперь сохранить что юзер навыбирал, или он каждый раз заново будет все выбирать?
Кстати суммы проекта нету. То есть мы будем в соответсвии с уровнем вопрошанта изображать таких же отвечантов, типа, чтоб человека не обидеть - пусть мучается, каждый имеет право мучиться, а мы с удовольствием будем наблюдать. |
А как сделать поле в которое будет выводится итоговая стоимость всех овощей? Как то делали по клику на кнопку. Жмёшь посчитать иттог и выводит. а можно ли чтоб так же сразу в итого сумма менялась?
|
kostyanet,
В localStorage или аяксом в сессию или БД записывать. Может и сайт весь написать тогда уж сразу? Можно же просто данные формы передать как массив добавив к именам input'ов [], а там их уже по уникальному полу которое скрытым в таблицу эту вставить так же надо, записывать данные либо в сессию либо в бд. |
blogivan,
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.js"></script>
<meta charset="utf-8"/>
<style>
table{
background: #FFF7BF;
border-spacing: 0px;
border: 1px solid #f00;
}
table td{
padding: 10px;
border: 1px solid #f00;
}
</style>
</head>
<body>
<table>
<!--Шапка таблицы************************************ **************************-->
<tr>
<td>Наименование работ</td>
<td>Цена за кг.</td>
<td>Колличество кг.</td>
<td>Сумма</td>
</tr>
<!--Шапка таблицы************************************ **************************-->
<tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">50</span>
<input name="price" type="hidden" value="50">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr><tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">30</span>
<input name="price" type="hidden" value="30">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr><tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">90</span>
<input name="price" type="hidden" value="90">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr><tr>
<td>Картофель</td>
<td class="price_kg">
<span class="value">70</span>
<input name="price" type="hidden" value="70">
</td>
<td>
<input class="input_kg" type="text" name="kg">
</td>
<td>
<span class="dostavka">0</span></td>
</tr>
<!--************************************************** *************************-->
</table>
<div>Общая сумма: <span class="SummAll"></span></div>
<script>
$('.input_kg').on('keyup',function(){
var kg = $(this).val().replace (/\D/gi, '').replace (/^0+/, '');
$(this).val(kg);
var priceKg = $(this).closest("tr").find(".price_kg input[name=price]").val();
var result = Math.round(kg * priceKg);
var priceKg = $(this).closest("tr").find(".dostavka").text(result);
$(".SummAll").html(summAll());
});
function summAll(){
var SummAll = 0;
$(".dostavka").each(function (i) {
var thisSumm = $(this).text();
SummAll = SummAll+(thisSumm*1);
});
return SummAll;
}
$(document).ready(function(){
$("[name=kg]").each(function () {
var kg = $(this).val().replace (/\D/gi, '').replace (/^0+/, '');
$(this).val(kg);
var priceKg = $(this).closest("tr").find(".price_kg input[name=price]").val();
var result = Math.round(kg * priceKg);
var priceKg = $(this).closest("tr").find(".dostavka").text(result);
});
$(".SummAll").html(summAll());
});
</script>
</body>
</html>
|
Цитата:
|
Ну те данные которые пользователь ввел.
Ну это уже выбор blogivan как и куда он их записывать будет, я же не знаю как он планирует этим пользоваться, будет ли он их аяксом записывать в сессию или в бд может сразу, вдруг это форма в личном кабинете. Можно же записать по разному, а так мне ему придется 100500 вариантов делать, если ему надо будет то он спросит же. |
Цитата:
|
| Часовой пояс GMT +3, время: 06:11. |