Имеется различное поведение браузеров в поле 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/ Объясните, пожалуйста, такое поведение - это особенности браузера или выполняемого скрипта? Скажите куда копать, а с остальным разберусь, надеюсь, сам:write: 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); } |
Часовой пояс GMT +3, время: 04:56. |