Показать сообщение отдельно
  #4 (permalink)  
Старый 17.06.2020, 06:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Лунтик, радио кнопки, это именованная взаимозависимая группа кнопок. В такой группе иметь состояние "выбрано" (checked = true) может только одна из них. Если выбирается другая, то она получает это состояние, а у ранее выбранной выбор сбрасывается (checked = false). Получать значение этой группы обходом всех в цикле бессмысленно. В нативном JS его можно получить как RadioNodeList.value, а в JQ $('#elevator .a1:checked').val(), вернет значение выбранной. Это флажки являются независимыми элементами, и чтобы получить все значения выбранных, можно обойти их и циклом.

Для удобства выбора флажков/радио используйте label, в этом случае выбрать кнопку можно и по тексту метки к ней. А идентификаторы (id) должны быть уникальными значениями в пределах всего документа, то есть id="net_lift" у трех кнопок, это ошибка. Они вообще не нужны в данном случае. Именовать поля как "Количество2" можно, но не стоит. Если не требуется отправка поля на сервер (отправление формы), то имя не обязательно указывать, кроме радио кнопок.

Обработку можно делегировать, но если умножать на 0, значение которое разрешено, то будет ноль, логично минимальное, это 1, так такое значение не повлияет на расчет.

<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="200" name="itemtype1" checked /> 200</label>
    <label><input type="radio" class="a1" value="250" name="itemtype1" /> 250</label>
    <label><input type="radio" class="a1" value="300" name="itemtype1" /> 300</label>
    <label><input type="radio" class="a1" value="350" name="itemtype1" /> 350</label>
    <br/>
  
  
    <input type="number" id="count2" value="1" min="1" />
    <input type="number" id="count3" value="1" 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() * $('#count3').val();
    $('#final_price_yslug').text(price.toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' }))
});
</script>
</body>
</html>


Если в кнопках типа number разрешен ручной ввод, то его нужно проверять, либо проверку их значений производить перед расчетом.
Ответить с цитированием