Обнаружение пользователя, набравшего в textarea, остановить div от обновления, JQUERY - PullRequest
1 голос
/ 23 января 2012

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

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

<script type="text/javascript">
$("#comment_textarea").live('keydown', function() {
   $('form #comment_textarea').elastic();   
   clearInterval(auto_refresh); auto_refresh = 0;
});
</script>

1 Ответ

1 голос
/ 23 января 2012

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

Если плагин elastic изменяет textarea, когда пользователь фокусируется на элементе ввода, вы можете вместо этого связать его с событием focus, чтобы он не запускал каждое нажатие клавиши:

<script type="text/javascript">
$(document).delegate("#comment_textarea", "keydown", function () {  
    clearInterval(auto_refresh);
    auto_refresh = 0;
}).delegate("#comment_textarea", "focus", function () {
    $('#comment_textarea').elastic(); 
});
</script>

Обратите внимание, что я использовал .delegate() вместо .live(). .delegate() позволяет выбрать корневой элемент, отличный от document.

Если вам нужно, чтобы плагин elastic вызывался внутри обработчика событий keydown или у вас все еще были проблемы с задержкой, вы всегда можете проверить значение переменной auto_refresh:

if (auto_refresh !== 0) {
    clearInterval(auto_refresh);
    auto_refresh = 0;
}

Этот код будет находиться внутри вашего keydown обработчика событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...