Jquery 限制所见即所得编辑器(NicEdit)中的字符数
我有这个jQuery代码:Jquery 限制所见即所得编辑器(NicEdit)中的字符数,jquery,text,nicedit,keyup,Jquery,Text,Nicedit,Keyup,我有这个jQuery代码: var char = 60; $("#counter").append("You have <strong>" + char + "</strong> char."); $("#StatusEntry").keyup(function () { if ($(this).val().length > char) { $(this).val($(this).val().substr(0,
var char = 60;
$("#counter").append("You have <strong>" + char + "</strong> char.");
$("#StatusEntry").keyup(function () {
if ($(this).val().length > char) {
$(this).val($(this).val().substr(0, char));
}
var rest = char - $(this).val().length;
$("#counter").html("You have <strong>" + rest + "</strong> char.");
if (rest <= 10) {
$("#counter").css("color", "#ff7777");
}
else {
$("#counter").css("color", "#111111");
}
});
var char=60;
$(“#计数器”).append(“您有”+char+“char”);
$(“#StatusEntry”).keyup(函数(){
if($(this).val().length>char){
$(this.val($(this.val().substr(0,char));
}
var rest=char-$(this).val().length;
$(“#counter”).html(“您有”+rest+“char”);
如果(rest您必须以nice edit div为目标
$(".nicEdit-main").keyup(...
如果您有多个编辑器,此解决方案将不起作用。如果您需要使用NicEdit,则可以通过将keyup/keydown事件绑定到新创建的div来限制击键(它不会替换您的textarea-它会添加一个div并隐藏您的textarea):
这是因为新创建的div始终位于textarea之前,所以这将适用于多个编辑器
但是,正如您在评论中指出的,contentEditable div可能就足够了-如果是,请使用以下方法:
var char = 60;
$("#counter").append("You have <strong>" + char + "</strong> char.");
$("#StatusEntry").keyup(function () {
if ($(this).text().length > char) {
$(this).text($(this).text().substr(1));
}
var rest = char - $(this).text().length;
$("#counter").html("You have <strong>" + rest + "</strong> char.");
if (rest <= 10) {
$("#counter").css("color", "#ff7777");
}
else {
$("#counter").css("color", "#111111");
}
});
var char=60;
$(“#计数器”).append(“您有”+char+“char”);
$(“#StatusEntry”).keyup(函数(){
if($(this).text().length>char){
$(this.text($(this.text().substr(1));
}
var rest=char-$(this).text().length;
$(“#counter”).html(“您有”+rest+“char”);
如果(休息)
placeCaretAtEnd函数从当您将val()更改为text()时,哪一行不起作用…什么不起作用?请您包括您的HTML…我不知道statusentry是什么…如果您将每个val()更改为text())然后你开始键入,在60个字符时,它开始替换begin中的文本。这样->你的substr不正确,在这里工作->使用div对我来说很好,contentEditable=true->你建议的解决方案有效,但是用div替换textarea只会取消表单提交。(没有textarea可提交)。如果不使用div替换textarea,如何实现这一点?
var char = 60;
$("#counter").append("You have <strong>" + char + "</strong> char.");
$("#StatusEntry").keyup(function () {
if ($(this).text().length > char) {
$(this).text($(this).text().substr(1));
}
var rest = char - $(this).text().length;
$("#counter").html("You have <strong>" + rest + "</strong> char.");
if (rest <= 10) {
$("#counter").css("color", "#ff7777");
}
else {
$("#counter").css("color", "#111111");
}
});
var len = 40;
$(".nicEdit-main").keydown(function () {
if($(".nicEdit-main").html().length>len){
var string = $('.nicEdit-main').html();
$('.nicEdit-main').html(string.substring(0, len));
placeCaretAtEnd($('.nicEdit-main').get(0));
}
});