Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подскажите событие любого изменения поля

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Rooner
Отправлено: 16 Октября, 2012 - 13:34:59
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Есть ли в jquery событие, которое обрабатывает любое изменение поля?
Например сейчас приходится обрабатывать по отдельности нажатия клавиш и изменение поля, вот так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $('#name').keyup(function() { checkEmpty('name', 'Заполните поле'); });
  2. $('#name').change(function() { checkEmpty('name', 'Заполните поле'); });

Делаю я так потому, что пользователь может заполнить поле без нажатия на клавиши клавиатуры
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2012 - 13:44:05
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




javascript-событие oninput
jQuery этого еще не умеет (форум), но и в js так смогут далеко не все браузеры. К примеру, IE только с 9-й версии, если не ошибаюсь.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 16 Октября, 2012 - 13:55:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




EuGen пишет:
jQuery этого еще не умеет

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. // Для IE < 9 propertychange
  3. $(function(){
  4.    $('#inp').on('input propertychange', function(){
  5.           $('#deBag').text(this.value);  
  6.    }); 
  7. });
  8.  

(Добавление)
EuGen пишет:
но и в js так смогут далеко не все браузеры

Событие onpropertychange для ie < 9
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2012 - 13:57:29
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Это все же не прямая поддержка (если почитать форум, это будет видно). Правда, мои данные могут уже быть устаревшими - не так давно было обновление jQuery - вполне могла появиться поддержка данного события.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 16 Октября, 2012 - 13:58:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




EuGen пишет:
Это все же не прямая поддержка

А это что по Вашему ?
armancho7777777 пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. $('#inp').on('input propertychange'

(Добавление)
jQ 1.7
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2012 - 14:03:05
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Это по-моему не то же самое, что $('#name').oninput - требуемый эффект достигается за счет отслеживания конкретного свойства.
11 месяцев назад был как раз jQuery 1.7 - в приведенной ветке ведется их форума подобное обсуждение.

Но, мне кажется, спор здесь неуместен. Я не утверждал, что в jQuery это не реализовать, а лишь указал на отсутствие прямой поддержки. Сейчас нужно бы по-хорошему смотреть спецификации 1.8 - чтобы увидеть, как дела обстоят в актуальной версии.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 16 Октября, 2012 - 14:03:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




EuGen пишет:
если почитать форум, это будет видно

Там обсужление годовалой давности.
(Добавление)
EuGen пишет:
$('#name').oninput

А это, по вашему, сработает ?

(Добавление)
EuGen пишет:
а лишь указал на отсутствие прямой поддержки

Это и есть прямая поддержка
CODE (javascript):
скопировать код в буфер обмена
  1. $('#inp').on('input propertychange'

А такой синтакис
CODE (javascript):
скопировать код в буфер обмена
  1. $('#element').onEvent

... не верен для jQ.
(Добавление)
Для делегирования событий для вновь добавленных элементов придётся в любом случае использовать метод on
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2012 - 14:12:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




armancho7777777 пишет:
А это, по вашему, сработает ?

Подозреваю, Вы поняли мою мысль. Не понимаю цели этого сарказма. Привязка к 'on' здесь не ключевая. И так ясно, что в jQuery синтаксис отличается.
Упрощенно: "Доступные краски 'синий,желтый,красный' не позволяют нам выкрасить объект сразу в зеленый цвет. Но мы сможем реализовать это, смешав синюю и желтую краски. Если мы добавим получившийся цвет в палитру, то далее сможем напрямую реализовать требуемое действие".


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 16 Октября, 2012 - 14:19:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




EuGen, хотя да, Вы правы, если бы была реализована поддержка обсуждаемого нами события,
то оба эти события, - oninput и onpropertychange были бы объеденены в одно, - input

(Отредактировано автором: 16 Октября, 2012 - 14:22:35)

 
 Top
Rooner
Отправлено: 16 Октября, 2012 - 14:25:58
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. // Для IE < 9 propertychange
  2. $(function(){
  3.   $('#inp').on('input propertychange', function(){
  4.          $('#deBag').text(this.value);  
  5.   });
  6. });

armancho7777777, спасибо, отлично работает. Во всех браузерах конечно не тестировал, но для моих задач вполне качественное решение.
(Добавление)
EuGen, ну а javascript-событие oninput не подойдет, слишком громоздко и не удобно в моем случае
 
 Top
armancho7777777 Супермодератор
Отправлено: 16 Октября, 2012 - 14:26:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Rooner пишет:
Во всех браузерах конечно не тестировал

Работает везде.
(Добавление)
Rooner пишет:
ну а javascript-событие oninput не подойдет

Будет ещё громоздче...
Отдельно надо реализовать это дело для всех браузеров кроме IE ниже 9ой версии, и отдельно для оставшихся:

(Отредактировано автором: 16 Октября, 2012 - 14:29:45)

 
 Top
iKNG
Отправлено: 16 Октября, 2012 - 16:35:53
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




А нельзя ли просто попробавть одной keyup? Вроде же все изменения в input проводятся только с помощью клавиатуры.
 
 Top
EuGen Администратор
Отправлено: 16 Октября, 2012 - 16:41:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет. Этого недостаточно. Поменять значение можно многими способами. Например, перетащить выделенный текст в поле или вставить содержимое буфера обмена через контекстное меню.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SAD
Отправлено: 16 Октября, 2012 - 18:01:43
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




jquery.textchange плагин
 
 Top
tuareg
Отправлено: 16 Октября, 2012 - 21:07:55
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




armancho7777777 Не все так просто. oninput не корректно работает в IE 9 не срабатывает например при нажатии на bacespace.
P.S И кстати у Евгена по ссылке это указано, плюс еще косяки с Сафари Улыбка

(Отредактировано автором: 16 Октября, 2012 - 21:14:39)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB