Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите доделать калькулятор (https://javascript.ru/forum/dom-window/77964-pomogite-dodelat-kalkulyator.html)

toyboy__37 07.07.2019 17:33

Помогите доделать калькулятор
 
Добрый вечер. Помогите, пожалуйста, доделать мини калькулятор.
Все значения меняются как надо. Но не хватает динамики, т.е когда я нажимаю на чекбокс ничего не происходит, а как только изменю число в инпуте - число меняется. Как можно сделать всё это динамично? Пробовал через .each() , но не помогло...

<input type="number" name="kvart" placeholder="kvart" required>
<input type="number" name="komn" placeholder="komn" >
<input type="checkbox" id="tepl" name="tepl" class="adds" value="0">
<label for="tepl">Тепловизор</label>
<input type="checkbox" id="avtocad" name="avtocad" class="adds" value="0">
<label for="avtocad">Автокад</label>
<input type="text" name="total" readonly="readonly" value="0">


var kvart = $("input[name='kvart']");
var komn = $("input[name='komn']");
var tepl = $("input[name='tepl']");
var avtocad = $("input[name='avtocad']");
var total = $("input[name='total']");

kvart.on("input", function () {
	var sum = 0;
	var sum2 = 0;
	var sum3 = 0;
	if(kvart.val() > 0 && kvart.val() <= 20){
		sum += 2000;
		avtocad.val(sum2 + 2000)
	} else if(kvart.val() > 20 && kvart.val() <= 30){
		sum += 2500;
		avtocad.val(sum2 + 2200);
	} else if(kvart.val() > 30 && kvart.val() <= 40){
		sum += 3000;
		avtocad.val(sum2 + 2500);
	} else if(kvart.val() > 40 && kvart.val() <= 60){
		sum += 3200;
		avtocad.val(sum2 + 2700);
	} else if(kvart.val() > 60 && kvart.val() <= 70){
		sum += 3500;
		avtocad.val(sum2 + 2900);
	} else if(kvart.val() > 70 && kvart.val() <= 90){
		sum += 4000;
		avtocad.val(sum2 + 3300);
	} else if(kvart.val() > 90 && kvart.val() <= 500){
		sum += 4000 + ((kvart.val() - 90 ) * 60);
		avtocad.val(sum2 + 3300 + ((kvart.val() - 90 ) * 60));
	} else {
		sum = 0;
		avtocad.val(0);
	};

	if(komn.val() == 1){
		tepl.val(sum3 + 1500)
	} else if(komn.val() == 2){
		tepl.val(sum3 + 2000);
	} else if(komn.val() == 3){
		tepl.val(sum3 + 2500);
	} else if(komn.val() == 4){
		tepl.val(sum3 + 3000);
	} else {
		tepl.val(0)
	};

		avtocad.each(function () {
		if(this.checked) {parseInt(this.value)} else {
			avtocad.val(0)
		};
	});

	tepl.each(function () {
		if(this.checked) {parseInt(this.value)} else {
			tepl.val(0)
		};
	});

		total.val(parseInt(sum) + parseInt(avtocad.val()) + parseInt(tepl.val()))
});

рони 07.07.2019 17:52

toyboy__37,
обработчик повесьте на форму в которой находятся все ваши элементы, вместо строки 7
ваша_форма.on("input change", function () {

Malleys 07.07.2019 17:53

toyboy__37, или если нет формы, то поменяйте
kvart.on("input", function () {
на
kvart.add(komn).add(tepl).add(avtocad).on("input", function () {


рони, change тут не нужно

toyboy__37 07.07.2019 17:58

рони,
Malleys,
Ребят, большое спасибо!


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