Помогите пожалуйста !
У меня есть код и мне нежно чтбы один <input type="number" id="count3" value="1" min="1" /> был связан с радио кнопками а другой <input type="number" id="count3" value="1" min="1" /> прибовлялся к сумме <input type="number" id="count3" value="1" min="1" /> и type="radio" .Вот код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="elevator">
<input type="radio" id="lift" class="a1" value="200" name="itemtype1" checked />
<span id="lift2">200</span>
<input type="radio" id="net_lift" class="a1" value="150" name="itemtype1" /> 150
<input type="radio" id="net_lift" class="a1" value="10" name="itemtype1" /> 150
<input type="radio" id="net_lift" class="a1" value="1500" name="itemtype1" /> 150
<br/>
<input type="number" id="count2" name="Количество2" value="0" min="0" />
<input type="number" id="count3" name="Количество3" value="0" min="0" />
</div>
<br> Итого:
<span id="final_price_yslug">0</span> руб
<script>
jQuery(function($) {
var calc = function() {
var price = 0;
$('#elevator .a1:checked').each(function() {
price += parseInt($(this).val());
});
price *= Math.max(1, parseInt($('#count2').val()));
price *= Math.max(1, parseInt($('#count3').val()));
$('#final_price_yslug').text(price);
};
$('#elevator .a1').on('change', calc);
$('#elevator #count2, #elevator #count3').on('input', calc);
});
</script>
</body>
</html>
|
Вы читали что писали для вас?
Это что такое d="net_lift" у трех полей? Это $('#elevator .a1:checked').each.... зачем? Что касается пояснений, то ничего не понятно что к чему связано - трижды приводите одно и тоже поле, а какие-то связи иные. |
НЕ смотрите я непонимаю одного гак сделать чтобы один инпуд был связн с радио кнопками другой был сам по себе.
|
Все я разобрался.Подумал и вот что получил
<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>
<body>
<div id="elevator">
<label><input type="radio" class="a1" value="1" name="itemtype1" checked /> 200</label>
<label><input type="radio" class="a1" value="2" name="itemtype1" /> 250</label>
<label><input type="radio" class="a1" value="3" name="itemtype1" /> 300</label>
<label><input type="radio" class="a1" value="4" name="itemtype1" /> 350</label>
<br/>
<input type="number" id="count2" value="0" min="0" />
<input type="number" id="count3" value="0" min="1" />
</div>
<span id="final_price_yslug">0</span>
<script>
$('#elevator').on('change input', 'input', function(e) {
var price = $(e.delegateTarget).find('input:radio:checked').val() * $('#count2').val() ;
$('#final_price_yslug').text((price+ ($('#count3').val()*10)).toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' }))
});
</script>
</body>
</html>
|
Только не так, иначе если не будет выбора количества в count2, то будет 0 в результате. Если такое допустимо, то ладно, иначе так как вам ранее писали:
заменить $('#count2').val() на Math.max(1, parseInt($('#count2').val())) или на такое parseInt($('#count2').val()) || 1 в этом случае если значение будет 0, то значение выбранной радио кнопки будет умножаться на 1. |
А можно полную версию прислать а тоя с
трудом понимаю что сам написал. |
Цитата:
|
Нет смотри мне нужно было сделать вот как тут https://rumexpert.ru/kalkulyator.html
хотябы механику и у меня получилось. Вот код
<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>
<body>
<div id="elevator">
<label><input type="radio" class="a1" value="1" name="itemtype1" checked /> 200</label>
<label><input type="radio" class="a1" value="2" name="itemtype1" /> 250</label>
<label><input type="radio" class="a1" value="3" name="itemtype1" /> 300</label>
<label><input type="radio" class="a1" value="4" name="itemtype1" /> 350</label>
<br/>
<input type="number" id="count2" value="0" min="0" />
<input type="number" id="count3" value="0" min="0" />
<input type="number" id="count4" value="0" min="0" />
</div>
<span id="final_price_yslug">0</span>
<script>
$('#elevator').on('change input', 'input','input', function(e) {
var price = $(e.delegateTarget).find('input:radio:checked').val() * $('#count2').val() ;
$('#final_price_yslug').text((price+ ($('#count3').val()*10)+($('#count4').val()*10)).toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' }))
});
</script>
</body>
</html>
|
Цитата:
У count2 указано значение по умолчанию равное 0 и минимальное 0. Из этого следует, что можно ничего не выбирать в этом поле. Но тогда значение выбранной itemtype1 умноженное на count2 будет равно 0. Есть смысл считать далее? А тут count3 value="0" min="1", это ошибка в общем-то, если мин. значение 1, то значение никак не может быть 0. Вот эту строку переписать так (если у count2 значение по умолчанию равное 0 и минимальное 0, это так и надо, может быть не указано)
var price = $(e.delegateTarget).find('input:radio:checked').val() * $('#count2').val(); //так сейчас
//заменить на
var price = $(e.delegateTarget).find('input:radio:checked').val() * +$('#count2').val() || 1;
Если и в count3 можно не вводить, то мин. значение его должно быть равно 0. А расчет по нему так:
(price+ ($('#count3').val()*10)) //это заменить на
(price + $('#count3').val() * 10)
|
Цитата:
Что касается умножить на 10 и это прибавить к сумме ранее найденной, то какой-то бред получается. Радио кнопки, это какой-то материал или т.п. Далее цена выбранного материала умножается на какое-то количество count2. Если count2 = 0, то price = 0. Что даст 0 + $('#count3').val()*10? Это что будет? Логику калькулятора своего поясните нормально, функцию по которой нужно считать, иначе ... |
| Часовой пояс GMT +3, время: 10:23. |