Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2010, 13:24
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Какой обработчик события использовать ?
Добрый день.
Имеем input1 и input2. При занесении числа в input1 происходит некое вычисление, результат которого заносится в input2. По задумке нужно сделать, что б после того, как input2 получит значение, срабатывала функция. Каким обработчиком ее вызвать ? Пробывал "onchange" - бестолку.
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2010, 13:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

lolka84 где ваш код?

На вскидку:

<form name="forma">
    <input type="text" />
    <input type="text" />
</form>

<script type="text/javascript">
window.onload = function(){
    var event = ['keyup', 'change'];
    for(i=0; i<event.length; i++){
       document.forms['forma']['on'+event[i]] = function(i){
           return function(){
               this.elements[1].value = (this.elements[0].value == '') ? '' : eval(this.elements[0].value);
           };
      }(i);
    }
};
</script>

Последний раз редактировалось monolithed, 12.11.2010 в 13:37.
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2010, 13:50
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

monolithed, код тут особого значения не имеет, это так сказать "вопрос общего плана"
Насчет вашего примера: немного неправильно меня поняли.
Имеем:
<form name="forma">
    <input id="one" type="text" value="" onkeyup="func();" />
    <input id="two" type="text" value="" readonly СОБЫТИЕ???="func1();" />
    <input id="free" type="text" value="" readonly />
</form>

<script type="text/javascript">
function func() {
  var in1 = document.getElementById("one"),
       in2 = document.getElementById("two");
  in2.value = Number(in1.value) + 5;
}
function func1() {
  var in2 = document.getElementById("two"),
       in3 = document.getElementById("free");
  in3.value = Number(in2.value) + 3;
}
</script>

Т.е. вводим число в инпут1, функция считает, бросает результат в инпут2, другая функция опять считает и выводит итог в инпут3.
Можно канешно сделать с помощью
return func1();
но по ряду причин делать так не хочу.

Последний раз редактировалось lolka84, 12.11.2010 в 13:53.
Ответить с цитированием
  #4 (permalink)  
Старый 12.11.2010, 14:39
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от lolka84
Т.е. вводим число в инпут1, функция считает, бросает результат в инпут2, другая функция опять считает и выводит итог в инпут3
И что тут такого сложного-то?

<form name="forma">
    <input type="text" />
    <input type="text" />
    <input type="text" />
</form>

<script type="text/javascript">
window.onload = function(){
    var event = ['keyup', 'change'];
    for(i=0; i<event.length; i++){
       document.forms['forma']['on'+event[i]] = function(i){
           return function(){
               this.elements[1].value = this.elements[0].value == '' ? '' : eval(this.elements[0].value) + 5;
               this.elements[2].value = this.elements[0].value == '' ? '' : eval(this.elements[1].value) + 5;
           };
      }(i);
    }
};
</script>


Сообщение от lolka84
<input id="free" type="text" value="" readonly />
readonly в вашем случае ставить не обязательно

Последний раз редактировалось monolithed, 12.11.2010 в 14:41.
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2010, 20:09
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

monolithed, спасибо.
А почему тогда не работает, если просто написать <input id="two" type="text" value="" readonly onchange="func1();" /> ?
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2010, 20:23
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от lolka84
А почему тогда не работает, если просто написать <input id="two" type="text" value="" readonly onchange="func1();" /> ?
1. логику от представления нужно отделять, поэтому так лучше не писать вообще
2. проанализируйте мой код, там два события, и поймите почему именно два

Последний раз редактировалось monolithed, 12.11.2010 в 20:26.
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2010, 21:02
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Сообщение от monolithed Посмотреть сообщение
1. логику от представления нужно отделять, поэтому так лучше не писать вообще
Можно подробнее ? Или ссылочку, где почитать можно. Ибо, вот честно, так довольно трудно понять в чем тонкость.

Сообщение от monolithed Посмотреть сообщение
2. проанализируйте мой код, там два события, и поймите почему именно два
Ок)
Ответить с цитированием
  #8 (permalink)  
Старый 12.11.2010, 21:07
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от lolka84
Можно подробнее ?
http://ajax-scripts.ru/otdelenie_log...stavlenia.html
http://ru.wikipedia.org/wiki/Model-View-Controller
Ответить с цитированием
  #9 (permalink)  
Старый 12.11.2010, 21:12
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как "обмануть" обработчик события? itPiligrim Events/DOM/Window 0 13.05.2010 22:55
обработчик события nikolaich ExtJS 1 15.04.2010 10:13
как узнать имеется ли обработчик события HelpeR Events/DOM/Window 9 17.02.2010 18:20
Обработчик события: как делает jquery? Shasoft jQuery 35 22.04.2009 09:41
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 22:29