Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2013, 07:49   #1
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию Поиск значения по мере ввода

Мне нужно, чтобы при вводе текста в поле с id=mytext происходили некоторые события, но не сразу, а с небольшой задержкой.
Для примера:
Код:
$("#mytext").change( function() {
  $.post("test.php", { text: $(this).val() } );
});
Здесь нужно навесить задержку так, чтобы пока пользователь не закончит ввод текста, данные не отправлялись. То есть, если промежуток между вводом символов менее 1 секунды, ничего не делаем, а если с момента ввода последнего символа прошло более 1 секунды, отправляем данные.

Как паузу ставить я в курсе, но мне нужно чтобы если я быстро введу слово "параллелепипед", то спустя 1 секунду после окончания набора должно быть отправлено один раз это слово, а не 14 раз с задержкой куски слова.

PS: поправочка - change мне не подойдет, потому что он как раз всего один раз срабатывает, но только после потери фокуса... мне нужно, чтоб от фокуса не зависело.

Последний раз редактировалось Mortimoro; 07.09.2013 в 08:02.
Mortimoro вне форума Ответить с цитированием
Старый 07.09.2013, 10:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка: Попробуй интервалы ставить:
Код:
$("#mytext").onkeypress( setInterval(foo($(this)),1000))
...
 function foo(me) {
  $.post("test.php", { text: me.val() } );
};
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2013, 11:45   #3
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

Stilet, если я правильно понимаю, то этот скрипт будет делать следующее: при нажатии любой клавиши при активном mytext он начнет запускать функцию foo() бесконечно каждую секунду.

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

Последний раз редактировалось Mortimoro; 07.09.2013 в 11:48.
Mortimoro вне форума Ответить с цитированием
Старый 09.09.2013, 08:33   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Код:
$("#mytext").onkeypress( setInterval(foo($(this)),1000))
setInterval возвращает идентификатор таймера, а не функцию, которую ждет метод .keypress (onkeypress - это свойство чистого javascript), .keypress создает слушателя события и выполняет функцию обратного вызова, переданную ей.
Воть.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ожидание ввода значения dingo_as Общие вопросы C/C++ 3 24.09.2012 15:39
Проверка на правильность ввода значения archiolidius Общие вопросы C/C++ 1 14.02.2012 22:39
Поиск по БД с несколькими полями ввода SERG1990 БД в Delphi 6 12.02.2012 16:54
Создание директории по мере необходимости men232 Общие вопросы C/C++ 0 25.01.2012 00:18
как сохранить значения ячеек после ввода ubun JavaScript, Ajax 3 24.11.2011 14:00