我正在尝试在带有 jQuery Mobile 的 textarea 中使用 max-length,但我遇到了一个奇怪的问题 - 问题是无论是否在 javascript 中使用 return false,textarea 都会阻止我输入 15 到 60 之间的文本人物太早了。。
maxLength 属性设置为 1150,我可以输入 1090 到 1115 个字符。我不知道它是否是使用复制和粘贴的功能,因为这是我测试过的唯一方法,但看起来很奇怪。
这是代码:
$(document).delegate('#main','pageinit',function() {
$('#title,#description').keypress,function(e){
var cur=$(this).val().length,
max=$(this).prop('maxLength'), rem=max-cur,
ch=$(this).parents('.ui-bar').find('.char-rem'),
red=$(this).parents('.ui-bar').find('.char-rem.red'),
green=$(this).parents('.ui-bar').find('.char-rem.green');
ch.children('span').html(rem);
if(rem <= 10)
{
green.removeClass('green')
ch.addClass('red');
} else {
red.removeClass('red')
ch.addClass('green')
}
if(rem == 0)
{
if(e.which!= 8)
{
return false;
}
}
})
})
每次都会发生的情况是,我只剩下少量的字符——但多于零——我不能再打字了。如果我删除以下内容,也会发生同样的事情:
if(rem == 0)
{
if(e.which!= 8)
{
return false;
}
}
我也尝试过使用 keydown 和 keyup 以及在 pageinit 内部或外部进行此操作,并进行了各种其他调整,并且我已经使用 textarea textLength 属性验证了 textarea 中的字符数,并且每次结果都是相同的。
现在,我正在使用 Chromium 来测试这个,我还没有在其他地方测试过,但我想看看是否有我遗漏的东西。
有什么线索吗?