Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.04.2012, 23:55
Аватар для w46823
Аспирант
Отправить личное сообщение для w46823 Посмотреть профиль Найти все сообщения от w46823
 
Регистрация: 28.03.2012
Сообщений: 36

onchange, onkeypress...
Здраствуйте. Пишу простенький калькулятор, и столкнулся с проблемой: хочу, чтобы калькулятор работал в реальном времени, без всяких там кнопок посчитать и т.д. Для этого, как я понял, нужно использовать для инпутов onkeypress, onfocus, onchange и т.д.
Проблема состоит в том, что никакой реакции эти операторы не дают (делал по этому примеру: http://learn.javascript.ru/play/tuto...m/percent.html ).
Подскажите, может ли это быть конфликтом скрипта с onkeyup и onmousedown, прописанных непосредственно в инпутах? И как мне быть вообще? Стоит ли дальше жить в этом жестоком мире?))

Последний раз редактировалось w46823, 11.04.2012 в 00:57.
Ответить с цитированием
  #2 (permalink)  
Старый 11.04.2012, 00:57
Аватар для w46823
Аспирант
Отправить личное сообщение для w46823 Посмотреть профиль Найти все сообщения от w46823
 
Регистрация: 28.03.2012
Сообщений: 36

<ul>
<li><a onclick="apple.a()">10 Яблочек</a></li>
<li><a onclick="cherry.a()">50 Вишенек</a></li>
</ul>
Вкусняшка <div id="fruitname"></div><br>
Сколько <input id="fruithowmany"  type="text" onmousedown="this.value=this.value.replace(/([^0-9])/g,'');" onkeyup="var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;" onchange="changed(this);" maxlength="3" size="1" ><br>
Цена <input type="text" id="price"><br>
<div id="fruitsum"></div>


var apple = {fruitName: 'Яблочки', howMany:10, price:4.21};
var cherry = {fruitName:'Вишенки', howMany:50, price:4.32};

function addel() {
   document.getElementById('fruitname').innerHTML = this.fruitName;
   document.getElementById('fruithowmany').value = this.howMany;
   document.getElementById('fruitprice').value = this.price;
   document.getElementById('fruitsum').innerHTML = Math.round(this.price*this.howMany*70)/100; //Замена toFixed(2)
   alert('Остальных 30% ворует правительство!');
}
apple.a = addel;
cherry.a = addel;

var fruithowmanyElem = document.getElementById('fruithowmany');
     fruithowmanyElem.onkeypress = calc;
     fruithowmanyElem.onkeyup = calc;
     fruithowmanyElem.oninput = calc;
     fruithowmanyElem.onpropertychange = function(){
           event.propertyName == "value" && calc();
     };
var fruitpriceElem = document.getElementById('fruitprice');
     fruitpriceElem.onkeypress = calc;
     fruitpriceElem.onkeyup = calc;
     fruitpriceElem.oninput = calc;
     fruitpriceElem.onpropertychange = function(){
           event.propertyName == "value" && calc();
     };

function calc(){
    var skolko = +fruithowmanyElem.value;
    var cena = +fruitpriceElem.value;
    var sum;
        sum = Math.round(cena*skolko*70)/100;
    var otkat = sum*0.3/cena;
    alert('Откат правительству составил '+otkat+this.fruitname);
}
Ответить с цитированием
  #3 (permalink)  
Старый 11.04.2012, 11:18
Аватар для w46823
Аспирант
Отправить личное сообщение для w46823 Посмотреть профиль Найти все сообщения от w46823
 
Регистрация: 28.03.2012
Сообщений: 36

nasqad,
Других способов создания динамического калькулятора я не знаю...
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2012, 21:36
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 03.12.2009
Сообщений: 579

у nasqad вроде рабочий вариант...

опишите логику, что там должно прибавляться/отниматься и т.д., а то я нифига не понял )
__________________
С моих слов записано верно.
Ответить с цитированием
  #5 (permalink)  
Старый 11.04.2012, 22:04
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от T-sh
у nasqad вроде рабочий вариант...
вы бы запустить сначала попробовали...
Ответить с цитированием
  #6 (permalink)  
Старый 11.04.2012, 22:26
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 03.12.2009
Сообщений: 579

Сообщение от Раед Посмотреть сообщение
вы бы запустить сначала попробовали...
да я запустил у себя вроде чего-то там считается, какие-то проценты выводятся

поэтому и попросил автора логику описать, чтоб было понятно, как это должно работать
__________________
С моих слов записано верно.
Ответить с цитированием
  #7 (permalink)  
Старый 11.04.2012, 22:41
Аватар для w46823
Аспирант
Отправить личное сообщение для w46823 Посмотреть профиль Найти все сообщения от w46823
 
Регистрация: 28.03.2012
Сообщений: 36

Вот в песочнице собственно сам код. В песочнице все работает так, как надо, но когда сохраняю в отдельный файл - on... не работает =(
Может это из-за того, что не прописал <!DOCTYPE HTML> ?
http://learn.javascript.ru/play/J8B3wb


Код должен делать следуюшее:
1) Кликаем на элемент в списке (Яблочки, Вишенки).
2) Функция addel добавляет в инпуты значения обьекта (apple или cherry соответственно).
3) При редактировании инпута срабатывают операторы onkeypress, onkeyup, oninput, onpropertychange и "на лету" обчисляют функицей calc значения и вставляют их в <div id="fruitsum"></div> и текстовые инпуты.

-------------

Как видите, начальные значения в инпутах обчисляет функция addel, а изменения -функция calc. По возможности подскажите пожалуйста, как сделать, чтобы это все делала только функция calc, буду очень благодарен))
Ответить с цитированием
  #8 (permalink)  
Старый 12.04.2012, 20:44
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от T-sh
да я запустил у себя вроде чего-то там считается, какие-то проценты выводятся
а вот у меня error выводится
Ответить с цитированием
  #9 (permalink)  
Старый 12.04.2012, 22:17
Аватар для w46823
Аспирант
Отправить личное сообщение для w46823 Посмотреть профиль Найти все сообщения от w46823
 
Регистрация: 28.03.2012
Сообщений: 36

Этот JavaScript сведет нас в могилу.
Ответить с цитированием
  #10 (permalink)  
Старый 14.04.2012, 23:02
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 16.12.2011
Сообщений: 4,415

Цитата:
Этот JavaScript сведет нас в могилу.
такое ощущение что вы не сталкивались с другими языками

Последний раз редактировалось cyber, 14.04.2012 в 23:10.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с onchange Mapshal Общие вопросы Javascript 3 09.08.2011 12:46
Событие onkeypress Артём Финк Events/DOM/Window 4 09.07.2011 18:02
setInterval не работает и onkeypress Jekel Javascript под браузер 10 09.12.2009 13:18
WYSIWYG не могу поймать событие onkeypress scuter Общие вопросы Javascript 5 25.09.2008 15:14
Помогите новичку - onChange() не срабатывает serp Общие вопросы Javascript 2 01.08.2008 13:47