Javascript 使用jQuery的文本区域键关闭事件的问题

Javascript 使用jQuery的文本区域键关闭事件的问题,javascript,jquery,Javascript,Jquery,我们在尝试实现一个类似于twitter上的单词计数器时遇到了问题,当用户在文本字段中键入时,该计数器会递减。不幸的是,它非常容易出错,因为一旦你通过退格删除了所有字符,它会显示你只剩下84个字符(除非你再次点击退格)。如果你按下delete按钮,计数器会下降,即使它没有从文本末尾的屏幕上删除任何内容(我猜它会删除“不可见”字符,导致它在前面的示例中显示为84而不是85)。我只想让它像推特上的一样运行 /* Limit textarea for cancelation policy to 85 c

我们在尝试实现一个类似于twitter上的单词计数器时遇到了问题,当用户在文本字段中键入时,该计数器会递减。不幸的是,它非常容易出错,因为一旦你通过退格删除了所有字符,它会显示你只剩下84个字符(除非你再次点击退格)。如果你按下delete按钮,计数器会下降,即使它没有从文本末尾的屏幕上删除任何内容(我猜它会删除“不可见”字符,导致它在前面的示例中显示为84而不是85)。我只想让它像推特上的一样运行

/* Limit textarea for cancelation policy to 85 characters*/

        $('.counter').text(85-($('#txtCpolicy').val().length));
        $('#txtCpolicy').keydown(function(e) {
            var current = $(this).val().length;
            $('.counter').text(85 - ($('#txtCpolicy').val().length));
            if(current >= 85) {
                if(e.which != 0 && e.which != 8) {
                    e.preventDefault();
                }
            }
        });

希望您能帮助

将代码更改为keyup而不是keydown。将文本添加到textarea之前会触发Keydown。一旦您更改它,它似乎就可以工作。

如果尾随空格导致问题,请使用以删除它们。此代码不会在所有浏览器中工作。这样做:
var key=e.which | | e.keyChar | e.keyCode
@Jason:实际上jQuery规范化了
which
属性来解决这个差异。