Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Доработка калькулятора товара (https://javascript.ru/forum/misc/55669-dorabotka-kalkulyatora-tovara.html)

metlick 08.05.2015 22:31

Доработка калькулятора товара
 
Помогите пожалуйста переделать калькулятор. Сейчас он принимает количество товара и выдает цену. Как доработать чтобы и при вводе цены выдавало количество?
<script type="text/javascript" src="js/calc.js"></script><BR>
<tr><td style="padding-right:10px;">Наименование</td><td>
<select name="b" id="field2" onchange="recalc()" style="width:150">
<option value="0" selected="selected">Выбрать...</option>
<option value="130">Rang 1</option><option value="35">Rang 2</option></select></td></tr>
 <tr><td style="padding-right:10px;">Количество:</td>
<input type=text id="field1" onKeyUp=recalc() value=0>    
<td style="padding-right:10px;">Сумма к оплате с учетом скидки:</td><BR>    <td>width=30%><span id="fieldRes">0</span></td><td style="padding-right:10px;">руб.</td></tr>
</table>


function price_format(o) {
    return Number(o).toFixed(1);
}    
    function recalc(){
var sum = price_format(parseFloat(document.getElementById('field1').value) * parseFloat(document.getElementById('field2').value));
var kol = price_format(parseFloat(document.getElementById('field1').value));
switch (true) {
        case kol > 0 && kol <= 99 && sum < 1000: document.getElementById('fieldRes').innerHTML = sum;
    break;
	  case kol > 0 && kol <= 99 && sum > 1000 && sum < 10000000: document.getElementById('fieldRes').innerHTML = sum - (sum * 5 / 100);
    break;
        case kol > 99 && kol <= 500000: document.getElementById('fieldRes').innerHTML = sum - (sum * 5 / 100);
    break;
    }}

ksa 12.05.2015 08:57

Цитата:

Сообщение от metlick
Как доработать чтобы и при вводе цены выдавало количество?

Отлавливать изменение цены... Производить аналогичные действия...

metlick 12.05.2015 17:19

Цитата:

Сообщение от ksa (Сообщение 370365)
Отлавливать изменение цены... Производить аналогичные действия...

Ну вот что смог и конечно же не работает.

<script>
function price_format(o) {
    return Number(o).toFixed(1);}

function recalc()     {
     var kol = price_format(parseFloat(document.getElementById('field1').value));
     orsum = price_format(parseFloat(document.getElementById('fieldRes').value));
     var sum = kol * parseFloat(document.getElementById('field2').value));
     var orkol = orsum / price_format(parseFloat(document.getElementById('field2').value));
    
   document.getElementById('field1').innerHTML = orkol;
     switch (true) {
        case kol > 0 && kol <= 199: document.getElementById('fieldRes').innerHTML = sum;
    break;
        case kol > 99: document.getElementById('fieldRes').innerHTML = sum - (sum * 5 / 100);
    break;    }}
</script>


<script type="text/javascript" src="js/calc.js"></script><BR>
<tr><td style="padding-right:10px;">Наименование</td><td>
<select name="b" id="field2" onchange="recalc()" style="width:150">
<option value="0" selected="selected">Выбрать...</option>
<option value="130">Rang 1</option><option value="35">Rang 2</option></select></td></tr>
 <tr><td style="padding-right:10px;">Количество:</td>
<input type=text id="field1" onKeyUp=recalc() value=0>    
<td style="padding-right:10px;">Сумма к оплате с учетом скидки:</td><BR><input type= "text" id="fieldRes" onKeyUp=recalc() value=0> <BR>style="padding-right:10px;">руб.</td></tr>
</table>

ksa 13.05.2015 08:27

Цитата:

Сообщение от metlick
Ну вот что смог и конечно же не работает.

Для начала, вместо всего этого говнокода, сделай нормальный простенький пример... На нем можно будет посмотреть, что делаешь ты и показать какие-то варианты решения...

metlick 13.05.2015 12:46

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

laimas 13.05.2015 13:26

Как доработать чтобы и при вводе цены выдавало количество?

И что это означает - зная цену за единицу товара, набирать цену произвольную, получая сколько товара выйдет на выбранную сумму?

ksa 13.05.2015 13:47

Цитата:

Сообщение от metlick
Спасибо добрый человек, удачи вам.

Заходи еще... :lol:

metlick 13.05.2015 17:28

Цитата:

Сообщение от laimas (Сообщение 370535)
И что это означает - зная цену за единицу товара, набирать цену произвольную, получая сколько товара выйдет на выбранную сумму?

Да

laimas 13.05.2015 17:33

И зачем это? Например, торговля бубликами и при наборе суммы могут получиться значения 0.15 бублика или 1.25, и это будет нормально?

metlick 13.05.2015 17:48

Цитата:

Сообщение от ksa (Сообщение 370540)
Заходи еще... :lol:

Цитата:

говнюшок
Опускаетесь до оскорблений? Низко. Мне вас искренне жаль.

metlick 13.05.2015 17:50

Цитата:

Сообщение от laimas (Сообщение 370588)
И зачем это? Например, торговля бубликами и при наборе суммы могут получиться значения 0.15 бублика или 1.25, и это будет нормально?

В моем случает да, 1 единица цифрового товара это 1000000.
И если уже выйдет за рамки 1кк, доработать чтобы округлило тоже можно.

laimas 14.05.2015 07:37

Если честно, я не понял смысла этого. Сделать это не проблема, но представляю себя на месте покупателя, и вместо того чтобы умножить цену товара на выбранное мною его количество, дабы понять хватит ли денег в кошельке, я начну прикидывать, деля произвольные суммы денег на цену товара. Ну это же не удобно.

Суть этого действия можете пояснить, может чего-то не известно и поэтому задач кажется бессмысленной.

metlick 14.05.2015 09:59

Цитата:

Сообщение от laimas (Сообщение 370690)
Если честно, я не понял смысла этого. Сделать это не проблема, но представляю себя на месте покупателя, и вместо того чтобы умножить цену товара на выбранное мною его количество, дабы понять хватит ли денег в кошельке, я начну прикидывать, деля произвольные суммы денег на цену товара. Ну это же не удобно.

Суть этого действия можете пояснить, может чего-то не известно и поэтому задач кажется бессмысленной.

Прошу прощения, но тут я вас не совсем понял. Суть в том чтобы покупатель рассчитывая потратить к примеру 500р вводил эту сумму выбирал в выпадающем списке наименование и при стоимости допустим в 1,2р за единицу ему выдавало округленно (всегда в большую сторону) 417шт. И соответственно если он просто хочет купить 300шт ему так же при вводе количества выдавало цену 360р (что на данный момент и реализовано).

laimas 14.05.2015 10:12

А что не понятного, сходите в магазин реальный и совершите в нем покупки. Как при этом вы будете поступать - делить сумму в кошельке на стоимость товаров, или же набирая товар, умножать цену товара на количество, и суммируя все?

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

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

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

metlick 14.05.2015 20:23

Цитата:

Сообщение от laimas (Сообщение 370736)
А что не понятного, сходите в магазин реальный и совершите в нем покупки. Как при этом вы будете поступать - делить сумму в кошельке на стоимость товаров, или же набирая товар, умножать цену товара на количество, и суммируя все?

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

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

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

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

laimas 14.05.2015 20:37

Вот что, ну если развесной товар и на сколько есть в кармане, тогда понятно.
Ну так делите сумму на цену товара, округляйте, вот и все решение:

Math.round(parseInt(введенная_сумма)/parseInt(цена_товара))

Только видимо придется определиться с единицами цены, типа как писал пример о граммах, и если будет необходимость в этом.

metlick 14.05.2015 21:36

Цитата:

Сообщение от laimas (Сообщение 370888)
Вот что, ну если развесной товар и на сколько есть в кармане, тогда понятно.
Ну так делите сумму на цену товара, округляйте, вот и все решение:

Math.round(parseInt(введенная_сумма)/parseInt(цена_товара))

Только видимо придется определиться с единицами цены, типа как писал пример о граммах, и если будет необходимость в этом.

Как оно с подсчетом тут проблемы нет, я скорее не понимал как брать значение из текстового поля и в него же выводить. Но уже вроде нашел примеры и потихоньку что-то получается.


Часовой пояс GMT +3, время: 21:36.