surovtsevandrew
@surovtsevandrew
Дизайн, Вёрстка, частичное программирование

Как отправить результат в span только после ввода в input?

(function ($) {
  $(function () {
 
        calculate();
		

        jQuery('#calculator input, #calculator select').change(function() {
            calculate();
        });
        jQuery('#calculator input').keyup(function() {
            calculate();
        });
        function calculate() {
      $('.calculator').each(function(key, val){
        calcInputs = {};
            $(this).find('input, select').each(function(key, val){
                name = $(this).attr('name');
                val = $(this).val();

                calcInputs[name] = val;
            });
			val += 'text';
            total = 0;
 
            switch (calcInputs.texture) {
                case '1500':
            total += calcInputs.area * 1500;
            break;
                case '2000':
            total += calcInputs.area * 2000;
            break;
                case '2500':
            total += calcInputs.area * 2500;
            break;
                case '3000':
            total += calcInputs.area * 3500;
            break;
                case '3500':
            total += calcInputs.area * 4000;
            break;
                case '4500':
            total += calcInputs.area * 4500;
            break;
                case '5000':
            total += calcInputs.area * 5000;
            break;	
                case '5500':
            total += calcInputs.area * 5500;
            break;	
                case '6000':
            total += calcInputs.area * 6000;
            break;				
            default:
            break;
            }
			
            switch (calcInputs.dia) {
                case '1':
            total *= calcInputs.area * 1;
            break;
                case '2':
            total *= calcInputs.area * 2;
            break;
                case '3':
            total *= calcInputs.area * 3;
            break;
                case '4':
            total *= calcInputs.area * 4;
            break;
                case '5':
            total *= calcInputs.area * 5;
            break;
                case '6':
            total *= calcInputs.area * 6;
            break;
                case '7':
            total *= calcInputs.area * 7
            break;	
                case '8':
            total *= calcInputs.area * 8;
            break;					
            default:
            break;
            }			
 
 
             switch (calcInputs.tip) {
                case '1':
            total *= calcInputs.area * 1;
            break;
                case '1.3':
            total *= calcInputs.area * 1.3;
            break;
                case '2':
            total *= calcInputs.area * 2;
            break;					
            default:
            break;
            }
			
             switch (calcInputs.rasp) {
                case '1.1':
            total *= calcInputs.area * 1.1;
            break;
                case '1':
            total *= calcInputs.area * 1;
            break;
                case '1.05':
            total *= calcInputs.area * 1.05;
            break;					
            default:
            break;
            }

             switch (calcInputs.pers) {
                case '1':
            total *= calcInputs.area * 1;
            break;
                case '1.1':
            total *= calcInputs.area * 1.1;
            break;
                case '1.2':
            total *= calcInputs.area * 1.2;
            break;					
            default:
            break;
            }		

            // каждый угол
                total *= calcInputs.corners * 1;
				totaled = total;
				totaled /= calcInputs.corners / 1;
				


		
        install = calcInputs.area * 1;

        total += install;
		total = total.toFixed(2); 
            total += ' руб.';
            jQuery(this).find('span.total').html(total);
		
        installed = calcInputs.area * 1;
        totaled += installed;
			totaled = totaled.toFixed(2);
            totaled += ' руб.';
            jQuery(this).find('span.totaled').html(totaled);
		
		var pr = $('.total span').text();
		$('#123sp').val(pr);
		
		var pre = $('.totaled span').text();
		$('#1234sp').val(pre);	



      });
        }

    });
})(jQuery);
;


калькуляция происходит мнгновенно, не могу понять как калькуляцию сделать после ввода input, вроде как можно атрибутом onchange в input, но он вроде как не хочет работать, т.к. результат передаётся в span.

По сути нужно, чтобы до ввода в input не было результата в span, думал как реализовать через if, но так и не смог додумкать.
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
ReaverJS
@ReaverJS
Оставьте только один эвент - input keyup
jQuery('#calculator input, #calculator select').change(function() {
      calculate();
});
jQuery('#calculator input').keyup(function() {
       calculate();
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы