Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.12.2012, 13:00
Интересующийся
Отправить личное сообщение для maxmaster Посмотреть профиль Найти все сообщения от maxmaster
 
Регистрация: 25.02.2012
Сообщений: 10

Имеется различное поведение браузеров в поле input type=number'
Приветсвую, форумчане, знатоков и не очень
С наступающим(или наступившим)
Выполняю задачку по учебнику М. Моррисона и код, в принципе, работает. Но столкнулся с разным поведением поля input type='number' в разных браузерах(корректно работает только в Opera, в Хром, FF, IE9 - поведение одинаковое). А именно:
- при повторном вводе значения в input скрипт не работает в случае, если введенное значение совпадает с предыдущим. Не имеет значения, было число стерто и введено, выделено текущее и введено новое, установлена ли галочка, которая отвечает за пересчет значений, если вводимое число совпадает с предыдущим - пересчета не происходит

Текущая реализация в действии http://max4396.narod2.ru/JS/Dunkans_...uncanForm.html
текст скрипта в HTML, CSS, JS - http://jsfiddle.net/4h9SU/

Объясните, пожалуйста, такое поведение - это особенности браузера или выполняемого скрипта? Скажите куда копать, а с остальным разберусь, надеюсь, сам

P.S. Решение найдено. Добавлено событие обработки в checkbox. Вот так бывает, стоит задать вопрос и уже знаешь ответ А различное поведение все равно не понятно

function initForm(){
	document.getElementById('name').focus('name');
	document.getElementById('subtotalField').value = "0.00";
	document.getElementById('totalField').value = "0.00";
	document.getElementById('taxField').value = "0.00";
	updateOrder();
}

function clickName(){
	document.getElementById('name').value = "";
}

function updateOrder(){
	/*Константы*/
	var TAXRATE = 0.095;
	var DONUTPRICE = 0.5;

	var name = document.getElementById('name').value;

	if(!name)
	{	document.getElementById('name').value ="Введите ваше имя";
		document.getElementById('name').style.color = '#070';
		document.getElementById('name').style.fontStyle = 'italic';
	}

	var numCakeDonuts = parseInt(document.getElementById('cakeDonuts').value, 10);
	var numGlazedDonuts = parseInt(document.getElementById('glazedDonuts').value, 10);

	if(isNaN(numCakeDonuts)) numCakeDonuts = 0;
	if(isNaN(numGlazedDonuts))numGlazedDonuts = 0;

	if(document.getElementById('checkbox_ed_cakeDonuts').checked)
	{	numCakeDonuts = parseInt(document.getElementById('cakeDonuts').value, 10)*10;
	}
	if(document.getElementById('checkbox_ed_glazedDonuts').checked)
	{	numGlazedDonuts = parseInt(document.getElementById('glazedDonuts').value, 10) * 10;
	}
//	alert(numCakeDonuts +', ' + numGlazedDonuts);

	var pickUpMinutes = parseInt(document.getElementById('pickUpMinutes').value, 10);

	var subtotal = (numCakeDonuts + numGlazedDonuts) * DONUTPRICE;
	var tax = subtotal * TAXRATE;
	var total = subtotal+ tax;

	if(isNaN(pickUpMinutes))
		{	document.getElementById('pickUpMinutes').value = "Введите время";
			document.getElementById('pickUpMinutes').style.color ='#070';
			document.getElementById('pickUpMinutes').style.fontStyle ='italic';
	}

document.getElementById('subtotalField').value = subtotal.toFixed(2);
	document.getElementById('taxField').value = tax.toFixed(2);
	document.getElementById('totalField').value = total.toFixed(2);
}

Последний раз редактировалось maxmaster, 30.12.2012 в 13:13. Причина: Решение найдено
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
IE 8: курсор, установленный в поле INPUT, пробивает стены насквозь! Маэстро Internet Explorer 4 21.06.2011 01:38
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 12:03
Перенос id чекбокса в поле input azarubin Общие вопросы Javascript 7 14.01.2011 22:30