2015-11-05 204 views
3

我有这个代码设置最大长度

<div id="IIYBAGWNBC" contenteditable="true"></div> 

这jQuery中

$("#IIYBAGWNBC").text(function(index, currentText) { 
    return currentText.substr(0, 100); 
}); 

如何防止用户在contenteditablediv

进入超过100个字符
+1

你想限制字符长度为100还是你想要前100个字符? – DinoMyte

+0

@DinoMyte我想要的最大长度为100 –

回答

3

这很简单,在​​,计算元素的字符串的长度,并防止用户,如果他试图喂养超过100个字符

$('div').on('keydown paste', function(event) { //Prevent on paste as well 

    //Just for info, you can remove this line 
    $('span').text('Total chars:' + $(this).text().length); 

    //You can add delete key event code as well over here for windows users. 
    if($(this).text().length === 100 && event.keyCode != 8) { 
    event.preventDefault(); 
    } 
}); 

Demo

说明:

在​​或在contenteditablediv我们检查divlength达到100,如果用户不点击退格键不是阻止用户养活paste事件通过点击任意键甚至粘贴右键单击更多字符。

+1

您的代码用于限制字符,但一旦达到限制,您将无法删除任何字符。 – DinoMyte

+0

@DinoMyte已编辑我的代码 –

+0

问题在于您无法使用箭头键,键盘快捷键进行复制和粘贴 – user1933131

3

我做了这样的事情通过使用上述答案概括的代码,这样就可以设置最大长度为任何CONTENTEDITABLE格

$("div[contenteditable='true'][maxlength]").on('keydown paste', function (event) { 
    var cntMaxLength = parseInt($(this).attr('maxlength')); 

    if ($(this).text().length === cntMaxLength && event.keyCode != 8) { 
     event.preventDefault(); 
    } 
}); 

HTML将作为bewlow

<div id="IIYBAGWNBC" contenteditable="true" maxlength="500"></div> 

这种方式,你可以提到maxlenght任何知足div元素。 希望这是有帮助的。