Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JQuery. Задержка выполнения скрипта 
V
    Опции темы
Gold Dragon
Дата 16.5.2011, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



У меня есть скрипт который реагирует на нажатие клавиш и возвращает определённые данные. Но он выполняется каждый раз по нажатию клавиши. В принципе ничего страшного, но если быстро вводить данные и выводить данные плавно, то получается моргание.. 

Мне нужно как-то сделать задержку выполнения скрипта.. Допустим я быстро ввожу данные, а скрипт посылает только через определённое время. А значит значение в поле ввода содержит уже больше буковков и моргания не будет.. Вот что я тут навертел, но результата всё равно нет

Вот что есть:
скрипт
Код

$("#kabsearchword").keyup(function(){
    setTimeout(function(){
        $.get('ajax.index.php?option=com_gdkabak&task=mosearch&str='+$("#kabsearchword").val(), function(data){
            $('#kabsearchform').fadeOut(300);
            $('#kabsearchform').html(data).fadeIn(300);
            return false;
        });
    }, 2600);
});

сама форма
Код

function gdModKabSearch() {
    $result = '<div id="kab-mod-search">';
    $result .= '<input name="kabsearchword" id="kabsearchword" maxlength="50" type="text" size="30" value=""  />';
    $result .= '<div id="kabsearchform"></div>';
    $result .= '</div>';
    $result .= '<script type="text/javascript" src="/components/com_gdkabak/js/mod_kabsearch.js"></script>';
    echo $result;
}

ну и стиль
Код

#kab-mod-search{
    width: 280px;
}
#kabsearchword{
    background: #f4f4f4;
    border: solid 1px #a3a3a3;
    padding: 5px 10px;
    font-family: Arial;
    font-weight:bold;
    -webkit-box-shadow: inset 0 2px 3px rgba(0,0,0,.1);
    -moz-box-shadow: inset 0 2px 3px rgba(0,0,0,.1);
    box-shadow: inset 0 2px 3px rgba(0,0,0,.1);
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
    -webkit-appearance: none; /* reset webkit search style */
    background-image: url("/components/com_gdkabak/images/search.png");
    background-position:center;
    background-repeat:no-repeat;
}
#kabsearchword:focus{
    background: #ffffcc
}
#kabsearchform{
    display:none;
    border:#cccccc;
}
.mosearchresult{
    width:100%;
    background-color:#ffffcc;
    padding:3px;
}


что и как исправить?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
нуп
Дата 16.5.2011, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



.stop() попробуйте
Код

('#kabsearchform').stop().fadeOut(300);
            $('#kabsearchform').html(data).stop().fadeIn(300);

PM MAIL   Вверх
Gold Dragon
Дата 16.5.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



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

заменил setTimeout, уж пусть всё будет jquery
Код

$("#kabsearchword").keyup(function(){
    $.get('ajax.index.php?option=com_gdkabak&task=mosearch&str='+$("#kabsearchword").val(), function(data){
        $('#kabsearchform').fadeOut(300);
        $('#kabsearchform').html(data).fadeIn(300);
        return false;
    });
}).delay(2600);



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
нуп
Дата 16.5.2011, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Пффф! Тогда такое, не вешайте на кейап, а сделайте таймер раз в 2 сек например и проверяйте содержимое поле, если изменилось - делаем запрос, если нет - курим
PM MAIL   Вверх
Gold Dragon
Дата 16.5.2011, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



это форма поиска на сайте... и постоянно таймер иметь не лучший способ.....


хотя если включать таймер при фокусе и выключать при потери фокуса... можно попробовать.. Но опять же не выход.. если пользователь поставил в поле курсор и пошёл курить, то базу завалит запросами smile

Что-то не могу сформировать логику, что-то крутится в голове, а не могу собрать в кучу


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
нуп
Дата 16.5.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Какими запросами? если значение в поле не изменяется, запроса не будет
PM MAIL   Вверх
Gold Dragon
Дата 16.5.2011, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



да в любом случае, если страница висит, то ничего не должно работать... Нафига такие заморочки. А если таких скриптов куча? сайт просто будет висеть

Добавлено через 1 минуту и 57 секунд
в общем логика наверное такая:
- я нажимаю клавишу
- включается таймер
- при достижении Х посылается запрос
- если таймер достиг Y то останавливается
- если нажата клавиша, то таймер обнуляется
- если фокус потерян то таймер останавливается....

так?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
нуп
Дата 16.5.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Нет. Строите форму и просто вешаете таймер. 
PM MAIL   Вверх
Gold Dragon
Дата 16.5.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



нуп, ты мне предлагаешь постоянно работающий таймер?

Добавлено через 18 секунд
или как? поясни.. а лучше кодом


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
нуп
Дата 16.5.2011, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Код

var send = true;
var old_value = '';
function timerFunc()
{
   if(!send || $("#kabsearchword").val() == old_value) 
      return;
  send = false;
 old_value = $("#kabsearchword").val();
   $.get('ajax.index.php?option=com_gdkabak&task=mosearch&str='+$("#kabsearchword").val(), function(data){
        $('#kabsearchform').fadeOut(300);
        $('#kabsearchform').html(data).fadeIn(300);
        send = true;
        return false;
    });
}
setInterval(timerFunc, 2000);


блин ещё условие забыл

Это сообщение отредактировал(а) нуп - 16.5.2011, 15:52
PM MAIL   Вверх
Gold Dragon
Дата 17.5.2011, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



нуп, а твой код сколько раз выполняется? smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 17.5.2011, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Код

function getIt(){
    $.get('ajax.index.php?option=com_gdkabak&task=mosearch&str='+$("#kabsearchword").val(), function(data){
        $('#kabsearchform').fadeOut(300);
        $('#kabsearchform').html(data).fadeIn(300);
        return false;
    });
}

$("#kabsearchword").keyup(function(){
    if (getIt.timeout) clearTimeout(getIt.timeout);
    getIt.timeout=setTimeout(getIt,2600);
})



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
нуп
Дата 17.5.2011, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Я не навязываю его, для этой задачи я бы сделал так. 
PM MAIL   Вверх
Gold Dragon
Дата 17.5.2011, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



ksnk, именно то что нужно! Именно то что я пытался сформировать но не получилось домыслить smile

Цитата(нуп @  17.5.2011,  09:19 Найти цитируемый пост)
Я не навязываю его, для этой задачи я бы сделал так.  
И очень плохо. Если скрипт выполнил свою функцию, он должен отключится. А у тебя постоянно работает и тратит ресурсы

Добавлено через 1 минуту и 41 секунду
вот окончательный код... может кому пригодится
Код

function kab_getKabak() {
    $('#kabsearchform').fadeOut(300, function(){
        $.get('ajax.index.php?option=com_gdkabak&task=mosearch&str=' + $("#kabsearchword").val(), function(data) {
            $('#kabsearchform').html(data).fadeIn(600);
            return false;
        });
    });
}
$("#kabsearchword").keyup(function(){
    if(kab_getKabak.timeout){
        clearTimeout(kab_getKabak.timeout);
    }
    kab_getKabak.timeout = setTimeout(kab_getKabak,500);
});
$("#kabsearchword").blur(function() {
    $("#kabsearchform").css("display", "none");
    $("#kabsearchword").val('');
});



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
wsok
Дата 21.6.2011, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



спасибо за ваш вариант кода, кое что использовал, но опять же остались вопросы, почему обработчику пхп достаются слова, предшествующие окончательному слову? Например слово test ввожу, но поиск уже пытается искать по:

t
te
tes

Хотя  как видно из моего кода, таймер сбрасывается при факте нового ввода и по идее отсчёт идёт опять с исходного значения.


Код

function seu(value) {
        var cu = 2;
        var users = $("#users");
    var itog = $("#itog");
        var timer = setInterval(function(){
cu--;
$("#secunda").html('<br><b>ввод данных доступен</b> '+cu);
$("#seu").keyup(function(){
clearInterval(timer);
});
    
 itog.html('<br><img src=images/ajax-loader.gif>');
if(cu <= 0 ) {
users.fadeTo(500, 0.4);
$("#secunda").html('');
    $.post(
        '../plugins/users/admin/ajax.inc.admin/usersload.php',
                {
                act: "users",
                id:  value
                },
        function (data) {
            users.html(data);
            users.fadeTo(500, 1);
        }
    );
       $.post(
        '../plugins/users/admin/ajax.inc.admin/usersload.php',
                {
                act2: "itog",
                id:  value
                },
        function (data) {
            itog.html(data);
        }
    );

clearInterval(timer);    
}    
    },1000);    
}


и форма поиска

Код

<input style=\"width: 70%; font-size:20px;\"  type=text id=seu value='' onKeyUp = 'seu(this.value);' >


скрипт пхп обработчика не стану приводить, там и так ясно, получает значение и он выводит данные из БД, вот только казус, откуда пхп "знает" историю ввода, до окончательного варианта слова test?

Весь прикол в том, что визуально при факте ввода таймер сбрасывается на исходную, но тем не менее данные вводимые до этого остаются доступными сценарию...

Помогите пожалуйста.

Это сообщение отредактировал(а) wsok - 21.6.2011, 07:56
PM MAIL   Вверх
wsok
Дата 21.6.2011, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



Всё вопрос снят, я тупо сувал скрипту переменную валуе, которая постоянно менялась при вводе, вот и получался некий массив данных с которыми я так безуспешно боролся и совершенно забыл про упоминание в вашем примере этой фишки .val(), так что теперь всё ок, работает как и надо, но вместо таймайт я использую интервал.
PM MAIL   Вверх
Gold Dragon
Дата 21.6.2011, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Цитата(wsok @  21.6.2011,  12:54 Найти цитируемый пост)
но вместо таймайт я использую интервал
Зачем?



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
wsok
Дата 22.6.2011, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



Цитата(Gold Dragon @ 21.6.2011,  12:45)
Цитата(wsok @  21.6.2011,  12:54 Найти цитируемый пост)
но вместо таймайт я использую интервал
Зачем?

Разве плохо? Вроде работает у меня и вполне неплохо, вот код


Код

function seu(value) {
var cu = 2;
var users = $("#users");
var itog = $("#itog"); 
var timer = setInterval(function(){
cu--;
$("#seu").keyup(function(){
clearInterval(timer);
});

$("#secunda").html('<br><b>ожидание окончания ввода данных</b>');
if(cu == 0 ) {
itog.html('<br><img src=images/ajax-loader.gif>');
users.fadeTo(500, 0.4);
$("#secunda").html('');

$.post(
'../plugins/users/admin/ajax.inc.admin/usersload.php',
{
act: "users",
id: $("#seu").val()
},
function (data) {
users.html(data);
users.fadeTo(500, 1);
}
);
$.post(
'../plugins/users/admin/ajax.inc.admin/usersload.php',
{
act2: "itog",
id: $("#seu").val()
},
function (data) {
itog.html(data);
}
);

clearInterval(timer);    
}    
},1000);    
}


чем так плох интервал?
PM MAIL   Вверх
Gold Dragon
Дата 22.6.2011, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Цитата(wsok @  22.6.2011,  01:34 Найти цитируемый пост)
чем так плох интервал? 
да тем что выполняет код много раз, через равные промежутки времени.. вопрос: а зачем это? smile Ну т.е. задача у функции другая изначально ;)



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
wsok
Дата 22.6.2011, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



Цитата(Gold Dragon @ 22.6.2011,  07:16)
Цитата(wsok @  22.6.2011,  01:34 Найти цитируемый пост)
чем так плох интервал? 
да тем что выполняет код много раз, через равные промежутки времени.. вопрос: а зачем это? smile Ну т.е. задача у функции другая изначально ;)

ну видишь в моём коде переменную cu--; ?

Вдруг я решу вывести визуально обратный отсчёт до совершения действия? Например, Ожидание ввода данных 5 секунд

4
3
2
1
0

а теперь ищем =))

Это сообщение отредактировал(а) wsok - 22.6.2011, 08:43
PM MAIL   Вверх
Gold Dragon
Дата 22.6.2011, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



ааа, ну тогда да.. Согласен что так интереснее ;)
вот только зачем он тут нужен  smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
wsok
Дата 22.6.2011, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



Цитата(Gold Dragon @ 22.6.2011,  09:28)
ааа, ну тогда да.. Согласен что так интереснее ;)
вот только зачем он тут нужен  smile

согласен, может в данном случае это не столь нужно, но ведь этот пример одним поиском не ограничивается, может кому то как раз и нужен пример кода с интервалом, чтоб выводить пользователю таймер?

А так согласен, можно интервал заменить на таймаут, но то что в данной теме есть уже два варианта кода с таймаут и интервалом, это уже нормально, может нуждающиеся выберут нужное решение для своих дел, глянув эту ветку.

В обоих случаях думаю получилось неплохо и главное всё работает как надо =)
PM MAIL   Вверх
wsok
Дата 22.6.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



В моём случае, я поиск встроил в раздел управления пользователями в админке CMS, которую пишу сам. Так как CMS ещё в в процессе, я н выложил демо в сеть, записал видео работы этого кода в моём примере.

http://www.youtube.com/watch?v=JWLPNJ1YMY0

В общем я обязан этой теме, что удалось довести код до готовности, что и видно на видео =)

По моему раздел управления пользователями вполне неплохо получился =)

Это сообщение отредактировал(а) wsok - 22.6.2011, 10:19
PM MAIL   Вверх
Gold Dragon
Дата 22.6.2011, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71





--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
wsok
Дата 22.6.2011, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



Цитата(Gold Dragon @ 22.6.2011,  11:25)
вот мой пример
http://tigris-tambov.ru/files/Project002.avi
smile

Тоже интересный вариант =)

Ну нечто такое я реализую на самом уже сайте, для админки достаточно того, что уже получилось.

В принципе функционально можно догнать и гугл поиск, там где выводится ещё и автозавершение вариантов поиска в выпадающем меню под формой ввода, но тоже надо покумекать, как это работает =)
PM MAIL   Вверх
Gold Dragon
Дата 22.6.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



там всё просто.. только для такого не хватит мощности наших хостингов smile 1000 челов зайдут и сервер базы ляжет 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
wsok
Дата 22.6.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.6.2011

Репутация: 1
Всего: 1



Цитата(Gold Dragon @ 22.6.2011,  11:35)
там всё просто.. только для такого не хватит мощности наших хостингов smile 1000 челов зайдут и сервер базы ляжет

потому и наверно лучше в админке такое делать, там где точно 1000 юзеров не зайдёт =))
PM MAIL   Вверх
minka92
Дата 13.1.2013, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.1.2013

Репутация: нет
Всего: нет



Всем привет)
Я новичок в яве скорее даже ламер, прошу вашей помощи,
В начале я планировал организовать поиск по сайту используя одно поле, вводишь текст а он по нему ищет результаты и выдает их в див, но столкнулся с проблемкой, когда вводишь данные слишком быстро запросы начинают теряться, решил оттянуть запрос чтобы они выполнялись через определенное время после последней вбитой в поле буквы и наткнулся на этот форум попроб-вал запихнуть функции постами выше, в существуюзий код, только выполняется он у меня когда загружается страница после загрузки и исполнения кода застывает в конце и не позволяет чего либо дописать в поле, может ли кто-нить помочь разобраться в чем проблема...

Код

<script>
            $(function() {
            var result = $('#result'); 
            var load = $('#load');
            var cu = 2;
            var search = $('#search').val();
            var timer = setInterval(function(){
            cu--;
            
            $('#search').keyup(function(){
            clearInterval(timer);
            });
            load.html('<br><b>ожидание окончания ввода данных</b>');

            if(cu == 0 ) {
            
            load.html('тест');
            result.fadeTo(500, 0.4);
                
                 
                    var year='".$year."';
                    var keystamp='564';
                    
                         $.ajax({
                            type: 'POST',
                            url: 'search.php',
                            data: {'search': search, 'year': year, 'keystamp': keystamp },
                            cache: false,                        
                            success: function(response){
                                        result.html(response);
                                        users.fadeTo(500, 1);
                                        load.html('');
                                     }
                         });
                         return false;
                         
                clearInterval(timer);
                }
                
                },2000); 
                
            });
        </script>



PM MAIL   Вверх
Aliance
Дата 14.1.2013, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Для этой задачи нужно использовать плагин jQuery под названием Throttle-debounce.
PM MAIL WWW ICQ Skype   Вверх
minka92
Дата 15.1.2013, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.1.2013

Репутация: нет
Всего: нет



Спасибо прочитал про него значит то что выше выкидываем оставляя обработчик запроса и затачиваем под Throttle-debounce??

Сделал вот так и опять тишина библиотеку подключил (которая не min) :(

Код

 <script type='text/javascript'>
             $(function() {
            var result = $('#result'); 
            var load = $('#load');
            var search = $('#search').val();
            var year='".$year."';
            var keystamp='564';
                        
            function onKeyUp() { 

                    $.ajax({
                            type: 'POST',
                            url: 'search.php',
                            data: {'search': search, 'year': year, 'keystamp': keystamp },
                            cache: false,                        
                            success: function(response){
                                        result.html(response);
                                     }
                         });
                         return false;
                });
                                
            

            
            $('#search').keyup($.debounce(300, onKeyUp));
            
            
            
      });
                
       
        </script>


Посмотрите я на правильном пути??

Это сообщение отредактировал(а) minka92 - 15.1.2013, 09:05
PM MAIL   Вверх
Aliance
Дата 15.1.2013, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Нужно наверное было указать, откуда плагин берется. Если использовать этот, то там идет сначало название функции, а потом уже задержка.

Здесь описание плагина на русском от автора

Вот пример реализации: http://jsfiddle.net/Aliance/LXAkU/

Это сообщение отредактировал(а) Aliance - 15.1.2013, 10:34
PM MAIL WWW ICQ Skype   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.1240 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.