当char计数达到一定值时,我想阻止用户在textarea中输入更多输入。
我的代码在Chrome,Safarai和Firefox中运行良好。
但在 IE 的任何版本中, preventDefault 方法无法正常工作
我在SO上发现了许多类似的主题,其中包括最常见的建议:
有什么建议吗?
// Attach textarea char counter to all textarea's with class of 'textarea-char-count'
$('.textarea-char-count').live("keyup", function(event) {
MYAPP.COMMON.textareaCounter(this, event);
});
// Attach textarea char counter to element
MYAPP.COMMON.textareaCounter = function(element, evt) {
//Get char limit
var limit = $(element).attr("maxlength");
// get current character count
var current = $(element).val().length;
// if current character count is greater than or equal to the character limit
if(current >= limit) {
// prevent further characters from being entered apart from the
// Delete and Backspace keys
if(evt.which != 0 && evt.which != 8)
{
if (evt.preventDefault) {
evt.preventDefault();
}
else {
evt.returnValue = false;
}
}
}
// add the remaining character count to our span
$(element).parent().next().show().text( current + " / " + limit);
}
答案 0 :(得分:3)
将事件从keyup
更改为keydown
,它将起作用
使用keyup
进行演示:Fiddle演示:Fiddle与keydown
按键事件无效since IE and Chrome does not fire it on backspace and delete
注意:计数器仍然表现得很奇怪。
可以进行更多更改,从live
移至on
,因为live
已被弃用
答案 1 :(得分:1)
live
已弃用并使用keypress
$('body').delegate(".textarea-char-count","keypress", function(event) {
MYAPP.COMMON.textareaCounter(this, event);
});