检测用户在textarea中输入,停止div刷新,JQUERY

时间:2012-01-23 04:21:23

标签: jquery html refresh

我每隔x秒左右刷新一次div。在这个div中我有一个textarea。我想要做的是如果用户开始输入这个textarea,那么不要刷新div,否则,保持刷新。

这是用于检测textarea中的keydown的JS,我遇到的问题是它在textarea中进行了输入,因为JS一直在为每次击键运行。我怎么能只运行一次呢?

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

1 个答案:

答案 0 :(得分:1)

这很可能是你正在调用的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事件处理程序。