2013-03-24 63 views
1

数字符我完全了解使用.bind('keyup', function() { });算在textareainput字符的方法,但我试图做一个​​功能,这样你就可以看到结果在您输入,versuses ,按住键盘上的一个字母,计数不会更新,直到您释放密钥后。使用KEYUP jQuery中

var input = $('textarea#input'); 
$('span#character-count').text(input.val().length); 

input.bind('keydown', function() { 
    $('span#character-count').text(input.val().length + 1); 
}); 

我现在的方法是有缺陷的:

当您选择所有,然后点击删除
  • ,计数搞砸。
  • 它需要+1来显示实时取景

的jsfiddle:http://jsfiddle.net/rdvR7/

回答

4

我建议在KEYUP准确计数比较好,即使是暂时错误而键被按下,因为实际上我认为用户不经常需要重复使用相同的字符,因此它们不倾向于保持单个按键,并且使代码简单。但是如果你想的keydown ...

“它需要+1来显示实时取景”

我想你知道,那是因为该领域的加工过程中的电流值keydown事件不包括与按键相关的更改 - 如果发生这种情况,则无法撤消更改就无法取消keydown事件。

一个简单的方法来解决是延迟更新计数,直到keydown事件结束后,也许是这样的:

var input = $('textarea#input'), 
    count = $('span#character-count').text(input.val().length); 

input.bind('keydown', function() { 
    setTimeout(function() { 
     count.text(input.val().length); 
    },4); 
}); 

更新演示:http://jsfiddle.net/nnnnnn/rdvR7/2/

注意的是,用户可以添加或删除文本,而不触发键盘事件(通过拖放或剪切/粘贴)。

0

绑定 “的keyup” 事件,当用户选择文本的textarea:

var input = $('textarea#input'); 
$('span#character-count').text(input.val().length); 

input.bind('keydown', function(e) { 
    $('span#character-count').text(0); 
    input.select(function() { 
     input.bind('keyup', function(e) { 
      $('span#character-count').text(input.val().length); 
     }) 
    }); 
    $('span#character-count').text(input.val().length); 
}); 

的jsfiddle:http://jsfiddle.net/glenswift/SEBLD/1/

你也可以结合bindidng“keydown”和“keyup”:

var input = $('textarea#input'), 
    firstInput = true; 
$('span#character-count').text(input.val().length); 
input.bind('keydown, keyup', function(e) { 
    $('span#character-count').text(0); 
    $('span#character-count').text(input.val().length); 
}); 

的jsfiddle:http://jsfiddle.net/glenswift/L6DR8/1/

+0

请注意,这将绑定越来越多的select处理程序来响应每个keydown事件,然后绑定越来越多的keyup处理程序来响应每个select事件。 (在页面上可见的实际结果将是相同的,因为所有的处理程序都会做同样的事情,但仍然...) – nnnnnn 2013-03-24 03:41:32

+0

对不起,但我很明白你的意思。请解释你说的意思是什么“因为所有的处理者都会做同样的事情,但仍然”,我试图解决这个问题。 – 2013-03-24 03:52:17

+0

无论如何,我用另一种方法更新答案,希望它可以帮助你 – 2013-03-24 04:01:57