Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выбрать правильную стратегию обработки события (https://javascript.ru/forum/misc/16778-vybrat-pravilnuyu-strategiyu-obrabotki-sobytiya.html)

micscr 21.04.2011 19:52

Выбрать правильную стратегию обработки события
 
Привет.
Такая ситуация, что есть поле ввода(type="text") и по изменению данных в нем шлется аякс запрос для подгрузки соответствующих данных в соседнее поле.
Запрос сам не очень быстрый, т.к. на сервере идет считывание данных с другого сайта. Ну в среднем: 2-3 сек.
Сделал запуск по onchange, чтобы не дергались запросы на сервер при редактировании, но как то оно ... не совсем нравится. Хотелось бы поинтерактивней, а то onchange начинает работать при потере фокуса только

В принципе основная операция тут будет - вставка в это поле из буфера обмена.

Как бы получше обработать данную ситуацию?

poorking 21.04.2011 20:25

Есть события paste, input, но они не везде. Можно назначить обработчик ряду событий. Где-то видел что-то наподобие
var events = ["paste", "keyup", "change", "input"];

for(var i = 0; i < events.length; i ++){
	elem["on" + events[i]] = function(e){
		//handler
	}
}

monolithed 21.04.2011 20:53

Цитата:

Сообщение от micscr
Сделал запуск по onchange, чтобы не дергались запросы на сервер при редактировании

что мешает отловить focusout? и подождать скажем пару секунд (если в течении этого времени пользователь ничего не ввел и все корректно, то отправлять):)

micscr 21.04.2011 21:10

с paste надо подумать, в доках к jquery не наблюдаю, но смотрю люди используют, завтра потестю.
Цитата:

что мешает отловить focusout?
с этим нет проблем. Именно те изменения когда человек редактирует поле, не выходя из него.

monolithed 21.04.2011 21:20

я делал так:
Цитата:

Сообщение от monolithed
подождать скажем пару секунд (если в течении этого времени пользователь ничего не ввел и все корректно, то отправлять



Часовой пояс GMT +3, время: 20:41.