Здравствуйте что бы не грузить браузер и сервер, необходимо откладывать выполнение функции пока пользователь не введет текст.
Мне кое что удалось - вот это работает (Функцию Delay() взял из интернета):
$(document).on('ready', function(){
notebook_counts('#notebook');
}
function notebook_counts(myObject) {
var delaytime=300;
$(myObject).keyup(delay(function () {
notebook_counts_handler(myObject);
}, delaytime));
}
function delay(callback, ms) {
var timer = 0;
return function() {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
callback.apply(context, args);
}, ms || 0);
};
}
Но как быть если во время работы страницы Delaytime нужно изменить. Например пользователь может вручную задать задержку если текст большой? Ниже код, параметр "delaytime" я получаю правильно в консоль выводит нужную цифру. Но даже если delaytime=5000 (5 секунд) - скрипт всеравно отрабатывает без задержки т.е вызывает функцию notebook_counts_handler()...
function notebook_counts(myObject) {
$(myObject).on('keyup', function () {
var delaytime=1;
if($.session.get('delaytype')=='manualdelay') delaytime=$('#delaytime').val();
else if($.session.get('delaytype')=='autodelay') delaytime=1000;
console.log(delaytime);
delay(notebook_counts_handler('#notebook'),delaytime);
});
}
Я пробывал разные варианты, но либо задержки нет, либо нет возможности ее изменить пользователем. Весь день провозился, но поставленную задачу не решил