2015-03-15 4 views
3

Я хочу сохранить текстовую информацию после ввода изменений и через 2 секунды.setInterval после внесения изменений в textarea

Я попробовал, используя этот код:

jQuery('#textarea').on('input propertychange paste', function() { 
    setInterval(function() { 
     //save 
    }, 2000); 
}); 

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

Любые идеи? Спасибо

ответ

3

Прежде всего, вам необходимо использовать setTimeout вместо setInterval. Затем вам нужно очистить предыдущий таймер, если есть новые изменения в textarea. Например, что-то вроде этого:

jQuery('#textarea').on('input propertychange paste', function() { 

    // Clear previous timeout 
    if ($(this).data('timeout')) { 
     clearTimeout($(this).data('timeout')); 
    } 

    // Set up new one 
    $(this).data('timeout', setTimeout(function() { 
     //save 
    }, 2000)); 
}); 
+0

... и, возможно, захватить 'this' или значение, локальный перед' setTimeout', хотя можно использовать '$ («#») текстовое поле' снова я полагаю. –

+1

Спасибо, что сработало хорошо. В вашем коде, я думаю, вы хотели поставить 'setTimeout' вместо' setInterval' ... – Jamie

+0

Да, конечно, спасибо, исправлено. – dfsq

Смежные вопросы