![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Gold Dragon |
|
||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
У меня есть скрипт который реагирует на нажатие клавиш и возвращает определённые данные. Но он выполняется каждый раз по нажатию клавиши. В принципе ничего страшного, но если быстро вводить данные и выводить данные плавно, то получается моргание..
Мне нужно как-то сделать задержку выполнения скрипта.. Допустим я быстро ввожу данные, а скрипт посылает только через определённое время. А значит значение в поле ввода содержит уже больше буковков и моргания не будет.. Вот что я тут навертел, но результата всё равно нет Вот что есть: скрипт
сама форма
ну и стиль
что и как исправить? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||
|
|||||||
нуп |
|
|||
![]() Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 8 Всего: 33 |
.stop() попробуйте
|
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
не пойдёт... Данные то уже получены.. А нужно чтобы нажатия были, а запрос отсылался только после определённого времени.. Сейчас он отсылается после каждого нажатия, но с первоначальной задержкой...
заменил setTimeout, уж пусть всё будет jquery
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
нуп |
|
|||
![]() Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 8 Всего: 33 |
Пффф! Тогда такое, не вешайте на кейап, а сделайте таймер раз в 2 сек например и проверяйте содержимое поле, если изменилось - делаем запрос, если нет - курим
|
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
это форма поиска на сайте... и постоянно таймер иметь не лучший способ.....
хотя если включать таймер при фокусе и выключать при потери фокуса... можно попробовать.. Но опять же не выход.. если пользователь поставил в поле курсор и пошёл курить, то базу завалит запросами ![]() Что-то не могу сформировать логику, что-то крутится в голове, а не могу собрать в кучу -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
нуп |
|
|||
![]() Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 8 Всего: 33 |
Какими запросами? если значение в поле не изменяется, запроса не будет
|
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
да в любом случае, если страница висит, то ничего не должно работать... Нафига такие заморочки. А если таких скриптов куча? сайт просто будет висеть
Добавлено через 1 минуту и 57 секунд в общем логика наверное такая: - я нажимаю клавишу - включается таймер - при достижении Х посылается запрос - если таймер достиг Y то останавливается - если нажата клавиша, то таймер обнуляется - если фокус потерян то таймер останавливается.... так? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
нуп |
|
|||
![]() Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 8 Всего: 33 |
Нет. Строите форму и просто вешаете таймер.
|
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
нуп, ты мне предлагаешь постоянно работающий таймер?
Добавлено через 18 секунд или как? поясни.. а лучше кодом -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
нуп |
|
|||
![]() Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 8 Всего: 33 |
блин ещё условие забыл Это сообщение отредактировал(а) нуп - 16.5.2011, 15:52 |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
нуп, а твой код сколько раз выполняется?
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 38 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
нуп |
|
|||
![]() Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 8 Всего: 33 |
Я не навязываю его, для этой задачи я бы сделал так.
|
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
ksnk, именно то что нужно! Именно то что я пытался сформировать но не получилось домыслить
![]() И очень плохо. Если скрипт выполнил свою функцию, он должен отключится. А у тебя постоянно работает и тратит ресурсы Добавлено через 1 минуту и 41 секунду вот окончательный код... может кому пригодится
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
wsok |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
спасибо за ваш вариант кода, кое что использовал, но опять же остались вопросы, почему обработчику пхп достаются слова, предшествующие окончательному слову? Например слово test ввожу, но поиск уже пытается искать по:
t te tes Хотя как видно из моего кода, таймер сбрасывается при факте нового ввода и по идее отсчёт идёт опять с исходного значения.
и форма поиска
скрипт пхп обработчика не стану приводить, там и так ясно, получает значение и он выводит данные из БД, вот только казус, откуда пхп "знает" историю ввода, до окончательного варианта слова test? Весь прикол в том, что визуально при факте ввода таймер сбрасывается на исходную, но тем не менее данные вводимые до этого остаются доступными сценарию... Помогите пожалуйста. Это сообщение отредактировал(а) wsok - 21.6.2011, 07:56 |
||||
|
|||||
wsok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
Всё вопрос снят, я тупо сувал скрипту переменную валуе, которая постоянно менялась при вводе, вот и получался некий массив данных с которыми я так безуспешно боролся и совершенно забыл про упоминание в вашем примере этой фишки .val(), так что теперь всё ок, работает как и надо, но вместо таймайт я использую интервал.
|
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
wsok |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
Разве плохо? Вроде работает у меня и вполне неплохо, вот код
чем так плох интервал? |
||||
|
|||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
да тем что выполняет код много раз, через равные промежутки времени.. вопрос: а зачем это?
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
wsok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
ну видишь в моём коде переменную cu--; ? Вдруг я решу вывести визуально обратный отсчёт до совершения действия? Например, Ожидание ввода данных 5 секунд 4 3 2 1 0 а теперь ищем =)) Это сообщение отредактировал(а) wsok - 22.6.2011, 08:43 |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
ааа, ну тогда да.. Согласен что так интереснее ;)
вот только зачем он тут нужен ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
wsok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
согласен, может в данном случае это не столь нужно, но ведь этот пример одним поиском не ограничивается, может кому то как раз и нужен пример кода с интервалом, чтоб выводить пользователю таймер? А так согласен, можно интервал заменить на таймаут, но то что в данной теме есть уже два варианта кода с таймаут и интервалом, это уже нормально, может нуждающиеся выберут нужное решение для своих дел, глянув эту ветку. В обоих случаях думаю получилось неплохо и главное всё работает как надо =) |
|||
|
||||
wsok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
В моём случае, я поиск встроил в раздел управления пользователями в админке CMS, которую пишу сам. Так как CMS ещё в в процессе, я н выложил демо в сеть, записал видео работы этого кода в моём примере.
http://www.youtube.com/watch?v=JWLPNJ1YMY0 В общем я обязан этой теме, что удалось довести код до готовности, что и видно на видео =) По моему раздел управления пользователями вполне неплохо получился =) Это сообщение отредактировал(а) wsok - 22.6.2011, 10:19 |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
wsok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
Тоже интересный вариант =) Ну нечто такое я реализую на самом уже сайте, для админки достаточно того, что уже получилось. В принципе функционально можно догнать и гугл поиск, там где выводится ещё и автозавершение вариантов поиска в выпадающем меню под формой ввода, но тоже надо покумекать, как это работает =) |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
там всё просто.. только для такого не хватит мощности наших хостингов
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
wsok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 21.6.2011 Репутация: 1 Всего: 1 |
потому и наверно лучше в админке такое делать, там где точно 1000 юзеров не зайдёт =)) |
|||
|
||||
minka92 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.1.2013 Репутация: нет Всего: нет |
Всем привет)
Я новичок в яве скорее даже ламер, прошу вашей помощи, В начале я планировал организовать поиск по сайту используя одно поле, вводишь текст а он по нему ищет результаты и выдает их в див, но столкнулся с проблемкой, когда вводишь данные слишком быстро запросы начинают теряться, решил оттянуть запрос чтобы они выполнялись через определенное время после последней вбитой в поле буквы и наткнулся на этот форум попроб-вал запихнуть функции постами выше, в существуюзий код, только выполняется он у меня когда загружается страница после загрузки и исполнения кода застывает в конце и не позволяет чего либо дописать в поле, может ли кто-нить помочь разобраться в чем проблема...
|
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 7 Всего: 137 |
Для этой задачи нужно использовать плагин jQuery под названием Throttle-debounce.
|
|||
|
||||
minka92 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.1.2013 Репутация: нет Всего: нет |
Спасибо прочитал про него значит то что выше выкидываем оставляя обработчик запроса и затачиваем под Throttle-debounce??
Сделал вот так и опять тишина библиотеку подключил (которая не min) :(
Посмотрите я на правильном пути?? Это сообщение отредактировал(а) minka92 - 15.1.2013, 09:05 |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 7 Всего: 137 |
Нужно наверное было указать, откуда плагин берется. Если использовать этот, то там идет сначало название функции, а потом уже задержка.
Здесь описание плагина на русском от автора Вот пример реализации: http://jsfiddle.net/Aliance/LXAkU/ Это сообщение отредактировал(а) Aliance - 15.1.2013, 10:34 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |