bug 描述:
正常一个微博 140 个字符。现在输入了 10 个字符,标志显示还可以输入 130 个。这时候按退格,标志显示 129 了。再按退格又显示 130,131,132......,139(这时框中没有文字了),140.
相反的操作也会有类似的问题,比如现在标志 130 个,之前按的是退格。这时候输入一个字符,标志显示 131。
就是在删除和输入交替的时候统计的字符数会出现错误。
我是在 app/assets/javascripts/micropost_form.js 里面加入了相应的方法。
$(function(){
var $micropost_content = $("#micropost_content");
$micropost_content.keypress(change_surplus).keypress();
});
var change_surplus = function() {
var surplus = 140 - $("#micropost_content").val().length;
// surplus = max_length - content_length
var $text = $("#surplus_count");
// change number text.
$text.text(surplus);
// change the color.
var red = $text.hasClass("surplus-nagative");
if(red && surplus > 0){
$text.removeClass("surplus-negative");
}
if(!red && surplus <= 0){
$text.addClass("surplus-negative");
}
}
不知道是哪里出了问题。。。
再添加一个 keyup 事件监听就解决了问题,但是总觉得有点不妥,更好的做法是什么呢?
$(function(){
var $micropost_content = $("#micropost_content");
$micropost_content.keypress(change_surplus).keypress();
$micropost_content.keyup(change_surplus);
});
...