我有一个摘要框,一旦达到300个字符,我不希望用户能够再输入。问题是,使用我的代码,使用keydown函数我不能退格,删除,ctrl + a(全选)如果我想更改内容。有没有办法防止文本进入,但允许按键被用于这些目的?
function char_count(){
limit = 300;
current = $('#property_summary').val().length;
$('#char_count').html(current + '/' + limit);
}
$('#property_summary').keyup(function(){
char_count();
});
$('#property_summary').keydown(function(e){
if( $('#property_summary').val().length == 300 ){
e.preventDefault();
}
});
答案 0 :(得分:3)
也许这会有所帮助?
<textarea maxlength="300">
Enter text here...
</textarea>
您必须记住使用例如PHP:strlen()函数在服务器端验证。
基于评论的几句话: 我们应该尽可能地做,保持标准。操作系统的标准:CTRL-C用于复制,CTRL + V用于粘贴。 如果有人覆盖此设置,他几乎总是错误的。 Javascript用于帮助而不是因为神经紧张。
如果maxlength设置为300,请进行一点注释:警告,您不能输入超过300个字符,请更正您的文字。 不需要破坏,同化和破坏用户文本。 这是我的意见,如果有人有另一个(我看到是的),请写一个评论。
PS。在这种情况下,最大长度是附加功能。因此,让浏览器“赶上”规范,并记住服务器端验证。
答案 1 :(得分:0)
我宁愿建议你使用这样的东西:
$('#property_summary').keyup(function () {
var balchar = 300;
if ($('#property_summary').val().length > balchar) {
$('#property_summary').val($('#property_summary').val().substring(0, balchar))
}
});
这将删除300以上的字符。还有效退格和删除工作。
答案 2 :(得分:0)
$('#property_summary').keydown(function(e){
if( $('#property_summary').val().length == 300 && e.keyCode != 8 && e.keyCode != 46 && !e.ctrlKey && !(e.ctrlKey && e.keyCode == 65)){
e.preventDefault();
}