Javascript.RU

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

onpropertychange и oninput
всем привет, кто знает как на onpropertychange и oninput программно повесить функции, у меня что-то не выходит...

Вот так я делал обычно, работает с onchange:
document.getElementById('test').onchange = function() {alert('test');}

а вот так вот, не работает... не могу понять почему и что зделать чтобы запахало...
document.getElementById('test').oninput = function() {alert('test');}

Выежнулcя через setAttribeute - кажется работает...
document.getElementById('test').setAttribute('oninput', "alert('test')");

но вот с onpropertychange IE отдаёт алёрт : 'Stack overflow at line: 0'

хелп!
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2010, 23:35
Аватар для mat_ppc
Аспирант
Отправить личное сообщение для mat_ppc Посмотреть профиль Найти все сообщения от mat_ppc
 
Регистрация: 29.04.2010
Сообщений: 31

Нашёл хороший пост, но проблема с 'Stack overflow at line: 0' осталась, сейчас на onchange в IE весит, но всё же я надеюсь на вашу помощь.

Сообщение от subzey Посмотреть сообщение
if (o.addEventListener){
			o.addEventListener('DOMControlValueChanged', updateSlider, false); // Presto
			o.addEventListener('input', updateSlider, false); // Gekko
			o.addEventListener('DOMCharacterDataModified', updateSlider, false); // WebKit
			o.addEventListener('change', updateSlider, false); // Graceful degradation
		} else if (o.attachEvent){
			o.attachEvent('onpropertychange', function(e){
				if(e.propertyName.toLowerCase() == "value"){
					updateSlider(e);
				};
			}); // Trident
			o.attachEvent('onchange', updateSlider); //Trident degradation
		};


o — объект, к которому нужно поставить обработчики, updateSlider — функция-обработчик. Прошу прощения за «неговорящие» имена, кусок выдран из проекта.
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2010, 23:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

В функции updateSlider меняется свойство value у объекта, на который повешен обработчик onpropertychange?
Ответить с цитированием
  #4 (permalink)  
Старый 02.11.2010, 17:58
Аватар для mat_ppc
Аспирант
Отправить личное сообщение для mat_ppc Посмотреть профиль Найти все сообщения от mat_ppc
 
Регистрация: 29.04.2010
Сообщений: 31

Эток кусок кода для примера, у меня просто отрабатывает
o.attachEvent('onchange', updateSlider);

Видимо не так понял, что такое onpropertychange, искал аналог oninput в IE...
Ответить с цитированием
  #5 (permalink)  
Старый 09.12.2010, 02:07
Новичок на форуме
Отправить личное сообщение для castor Посмотреть профиль Найти все сообщения от castor
 
Регистрация: 09.12.2010
Сообщений: 7

Kolyaj
А что насчет изменения value у объекта с onpropertychange?
Есть какие-то решения или описание проблемы?
"Ручное" изменение каких атрибутов вызывает такую же проблему?

Столкнулся с неправильной отработкой первого нажатия после установки value у текстового поля.
Ответить с цитированием
  #6 (permalink)  
Старый 09.12.2010, 07:15
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от castor
"Ручное" изменение каких атрибутов вызывает такую же проблему?
эту проблему вызывает бесконечная рекурсия
Ответить с цитированием
  #7 (permalink)  
Старый 09.12.2010, 08:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от castor
А что насчет изменения value у объекта с onpropertychange?
Есть какие-то решения или описание проблемы?
"Ручное" изменение каких атрибутов вызывает такую же проблему?
А где там проблема? Я вижу только недопонимание. Проблемы не вижу.
Ответить с цитированием
  #8 (permalink)  
Старый 09.12.2010, 13:20
Новичок на форуме
Отправить личное сообщение для castor Посмотреть профиль Найти все сообщения от castor
 
Регистрация: 09.12.2010
Сообщений: 7

Простейший пример

<form>
	<input name="a1" onpropertychange="this.form.a2.value = this.value;">
	<input name="a2">
	<input type="button" value="test" onclick="this.form.a1.value = 'new';">
</form>


Пока не изменяем "вручную" value, реакция на ввод норм, как только поменяли - первое нажатие не приводит к срабатыванию обработчика. То бишь и событие не запускается.

Цитата:
эту проблему вызывает бесконечная рекурсия
Не понял. Пояснить сию мысль можно?

Цитата:
Я вижу только недопонимание
Да вот и я тоже готов повторить эти слова

Последний раз редактировалось castor, 09.12.2010 в 13:24.
Ответить с цитированием
  #9 (permalink)  
Старый 09.12.2010, 13:35
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Теперь вижу проблему

Но это больше похоже на баг браузера.
Ответить с цитированием
  #10 (permalink)  
Старый 09.12.2010, 13:54
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от castor
Не понял. Пояснить сию мысль можно?
твоя проблема отличается от проблемы ТС
Ответить с цитированием
Ответ



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

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