Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Пауза перед запросом при вводе с клавиатуры
 
 автор: Richard Ferlow   (02.07.2009 в 12:38)   письмо автору
 
 

Суть скрипта такая - человек начинает вводить с клавиатуры символы - ему предлагают варианты из базы.

Насколько я понял, за это отвечает вот эта часть

        $(".citySelector").keyup(function(){
            /* Обработчик событий при вводе названия города */
            var part;
            th.sendData({container:$(this)});
            var cityLike = th.checkCityLike($(this).val());
            if(cityLike=='0'){
                th.hideDl($(this).parent(".cityContainer").children(".cityList"));
            }
            if(th.checkCity($(this).val())=='1'){
                // City founded
                part = $(this).removeClass("errorBlock")
                                 .parent(".cityContainer")
                                 .removeClass("errorBlock")
                                 .parent(".cityPart")
                              .prev("input[name=for]")
                              .val();
                       $("."+part).show();
            } else {
                // City not founded
                part = $(this).addClass("errorBlock")
                                 .parent(".cityContainer")
                                .addClass("errorBlock")
                              .parent(".cityPart")
                              .prev("input[name=for]")
                              .val();
                        $("."+part).hide();

            };

            var sel =     $(this).parent(".cityContainer").parent(".cityPart");
            var ident = sel.prev("input[name=for]").val();
            var checked = $("input[name="+ident+"]:checked").val();
            th.checkRadios(ident,checked);
        });


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

  Ответить  
 
 автор: PAT   (02.07.2009 в 12:46)   письмо автору
 
   для: Richard Ferlow   (02.07.2009 в 12:38)
 

Обычный скрипт работает так, что запросы к базе идут после каждого нажатия - в итоге юзер получит то, что соответствует последней введённой строке.

Если уж "задерживать, то тогда надо после каждого нажатия "дисаблить" инпут, дожидаться ответа от базы, показывать варианты и только потом "раздисабливать" инпут снова - до следующего нажатия.

Обычный юзер вводит СРАЗУ несколько символов подряд, НЕ ГЛЯДЯ на монитор.
Юзер, введя, например, три символа, очень удивится (и расстроится), когда увидит, что он дважды впустую стучал по баттонам.

Никаких "задержек" делать не надо В ПРИНЦИПЕ.
И никто - из грамотных программёров - этих задержек и не делает.

  Ответить  
 
 автор: Richard Ferlow   (02.07.2009 в 12:51)   письмо автору
 
   для: PAT   (02.07.2009 в 12:46)
 

Я сделал не "задержку", а просто минимальную длину для поиска от 2х символов ввёл - кажется это решило проблему.

  Ответить  
 
 автор: Richard Ferlow   (02.07.2009 в 12:53)   письмо автору
 
   для: PAT   (02.07.2009 в 12:46)
 

А так вообще имел ввиду такую задержку - после того как ввел последний сивмол и ждет - результат через две секунды допустим появляется. Тогда запрос к базе не будет идти после кажого нажатия

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования