Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2013, 16:12
Интересующийся
Отправить личное сообщение для Mitrich Посмотреть профиль Найти все сообщения от Mitrich
 
Регистрация: 24.08.2013
Сообщений: 20

Как сделать, чтобы значения input radio в переменной обновлялись при нажатии
Приветствую!
У меня калькулятор цен. Всё работает, но есть проблема:

1 есть Блок радиокнопок
2 Их значения записываются в переменную
var premises =  $("input[name='premises']:checked").val();

3 Конечная формула в которой суммируются все переменные вместе с этой
var amount = Math.ceil ((сamcorders_a + сamcorders_b) * distance_between * max_h * premises * lifetime * cost_of_time + psu * cost_of_time);


И вроде бы всё OK.., Ан нет...
Дело в том, что при переключении радиобатонов переменная premises не обновляется на лету, а только после того как будет изменено одно из значений других обычных input(ов) ):
Мало того. что это бесит, но это ещё даёт не верный результат, когда при пересчёте последним действием юзер выбирает из вариантов блока радиокнопок...


Как быть?
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2013, 16:14
Интересующийся
Отправить личное сообщение для Mitrich Посмотреть профиль Найти все сообщения от Mitrich
 
Регистрация: 24.08.2013
Сообщений: 20

На всякий случай полный код:
jQuery(document).ready(function($){
		window.onload = function(){
		var intc = document.querySelectorAll(".int");
		var result = document.getElementById("total");
		
		for(var n = 0; n <= intc.length - 1; n++){
			intc[n].addEventListener("keyup", function(){
						
				
				var сamcorders_a = (parseFloat(intc[0].value))*0.835;
				var сamcorders_b = (parseFloat(intc[1].value))*0.501;
				var amt_сamcorders = (parseFloat(intc[0].value))+(parseFloat(intc[1].value));
				var distance_between = (parseFloat(intc[2].value));
				var max_h = (parseFloat(intc[3].value));
				var psu = (parseFloat(intc[4].value));
				var premises =  $("input[name='premises']:checked").val();
				
				var lifetime = (parseFloat(intc[8].value));
				var cost_of_time = 801;
				
		
				if(distance_between <= 50){
					distance_between  = 1;
				}
				else if(50 < distance_between && distance_between <= 70){
					distance_between  = 1.1;
				}
				else if(70 < distance_between && distance_between <= 100){
					distance_between  = 1.2;
				}
				else if(100 < distance_between){
					distance_between  = 1.3;
				}
				if(max_h <= 3){
					max_h  = 1;
				}
				else if(3 < max_h ){
					max_h  = 1.3;
				}
				if(psu <= (amt_сamcorders/5)){
					psu  = 0;
				}
				else if(psu > (amt_сamcorders/5)){
					psu  = (amt_сamcorders/5)*0.3*1.67;
				}
				
				if(lifetime <= 1){
					lifetime  = 1;
				}
				else if(1 < lifetime && lifetime <= 3){
					lifetime  = 1.1;
				}
				else if(3 < lifetime ){
					lifetime  = 1.2;
				}
				
				var amount = Math.ceil ((сamcorders_a + сamcorders_b) * distance_between * max_h * premises * lifetime * cost_of_time + psu * cost_of_time);
			if(isNaN(amount)){
					amount = 'Пожалуйста заполните все поля калькулятора';
				}
				result.innerHTML =  amount;
				
			}, false);
		}

	}
$("#button1").click( function() {
$('.bt').css({'display': 'block' });


});
$(".int").click( function() {
$('.bt').css({'display': 'none' });
});
	});
Ответить с цитированием
  #3 (permalink)  
Старый 03.09.2013, 17:49
Интересующийся
Отправить личное сообщение для Mitrich Посмотреть профиль Найти все сообщения от Mitrich
 
Регистрация: 24.08.2013
Сообщений: 20

Мне казалось, что написание калькуляторов цен весьма распрастранённое дело...
Не уж то никто не сталкивался с подобной проблемой? );
Или на неё просто забивают?...
Ответить с цитированием
  #4 (permalink)  
Старый 03.09.2013, 18:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Mitrich,
может поставить клик на радио а не keyup и определится бы jQuery или не jQuery но это как хотите
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так чтобы в место value использовать url чтобы картинка менялось через зн sarik Общие вопросы Javascript 9 22.02.2013 13:24
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
HTML5 Как сделать, чтобы можно было двигать картинку мышью? Бобр Общие вопросы Javascript 2 18.06.2010 21:22
Как сделать, чтобы музыка <embed> на странице не играла только при первом посещении? Bad Request Общие вопросы Javascript 22 27.07.2009 19:44
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24