Html 将最后一个字符输入替换为内容可编辑div(已尝试所有选项)

Html 将最后一个字符输入替换为内容可编辑div(已尝试所有选项),html,keydown,jscript,Html,Keydown,Jscript,我有一个由内容可编辑div定义的消息框。用户可以在输入后编辑他们的消息,我有一个字符倒计时,但当我剩下0个字符时,我无法找到合适的方法删除最后一个字符或禁止最后一次按键 当前方法只是将光标发送回消息的开头,而不删除字符。我尝试了互联网上几乎所有的建议,从拼接到正则表达式再到子字符串。我发现他们都不工作 下面我向您展示的代码是我自己的代码,也有相同的问题,在0处,光标只返回消息的开头,然后再次允许更多字符,而不限制允许的字符数 有谁能帮我一个忙,提出一个实现这个简单目标的方法吗。我会非常饱的 这是

我有一个由内容可编辑div定义的消息框。用户可以在输入后编辑他们的消息,我有一个字符倒计时,但当我剩下0个字符时,我无法找到合适的方法删除最后一个字符或禁止最后一次按键

当前方法只是将光标发送回消息的开头,而不删除字符。我尝试了互联网上几乎所有的建议,从拼接到正则表达式再到子字符串。我发现他们都不工作

下面我向您展示的代码是我自己的代码,也有相同的问题,在0处,光标只返回消息的开头,然后再次允许更多字符,而不限制允许的字符数

有谁能帮我一个忙,提出一个实现这个简单目标的方法吗。我会非常饱的

这是我的密码

$(function () {

    $(ebm).keydown(checklimitsBuyer);
    });

    function checklimitsBuyer(){

        var username = $(ebm).html();
        var nameReg = /^.{0,100}$/;


        var messlength = username.length;
        var amount=100;

            var leftlength=amount-messlength;
            var ebmname=document.getElementById('Bname'+varmessageid+'');


                if (messlength < amount) {
                $(ebmname).text('Chars Left'+leftlength);
                                }




                    if(!nameReg.test(username)) {
                    $(ebm).css('border', '1px dashed red');
                    //alert('Only 300 Characters Allowed');
                        var newStr = username.replace(/.$/,".")
                        $(ebm).text(newStr);
                    }  

                                if(nameReg.test(username)) {
                                $(ebm).css('border', '1px dashed #07f310');


                                } 
                            }
$(函数(){
$(ebm).keydown(checklimitsBuyer);
});
函数checklimitsBuyer(){
var username=$(ebm.html();
var nameReg=/^.{0100}$/;
var messlength=username.length;
风险价值金额=100;
var leftlength=长度;
var ebmname=document.getElementById('Bname'+varmessageid+'');
如果(信息长度<金额){
$(ebmname).text('Chars Left'+leftlength);
}
如果(!nameReg.test(用户名)){
$(ebm).css('border','1px红色虚线');
//警报(“仅允许300个字符”);
var newStr=username.replace(/.$/,“)
$(ebm).text(newStr);
}  
if(名称注册测试(用户名)){
$(ebm).css('border','1px虚线#07f310');
} 
}

如果要限制用户可以输入的字符数,可以尝试以下方法:

$(窗口).ready(()=>{
//我们的最大字符数
设max=10;
//设置允许用户使用的div的文本
//记录他还能输入多少个字符
$('#字符数')。文本(`剩余字符:${max}`);
$('#message')。打开('keypress input paste',函数(e){
//内容可编辑div中的字符数
让charCount=$(this).text().length;
如果(字符数>=最大值){
//阻止用户键入
e、 预防默认值();
}
$('#char count').text(`剩余字符:${max-charCount}`);
});
});
#消息{
边框:1px绿色虚线;
高度:100px;
}
#字符计数{:
边缘顶部:10px;
}

非常感谢

var ebm=document.getElementById('editBuyer'+varmessageid+'');



     $(ebm).on('keypress', function(e){

    var username = $(ebm).html();
    var nameReg = /^.{0,300}$/;

    if(!nameReg.test(username)) {
    $(ebm).css('border', '1px dashed red');
    e.preventDefault();

alert('Only 300 Characters Allowed');
                                }  

    if(nameReg.test(username)) {
    $(ebm).css('border', '1px dashed #07f310');
    } 
});

var ebm=document.getElementById('editBuyer'+varmessageid+'');$(ebm).on('keypress',function(e){var username=$(ebm).html();var nameReg=/^.{0300}$/;if(!nameReg.test(username)){$(ebm.css('border','1px红色虚线');e.preventDefault();alert('仅允许300个字符');}if(nameReg.test(用户名){$(ebm).css('border','1px-smash#07f310');}})@lezz,我已经更新了我的答案。另外,如果它解决了你的问题,请不要忘记投票并将其标记为答案:)如果这给你带来了任何问题,我很抱歉,但我撞到了旗子上了…意外地…按键也很有帮助,直到事件发生后,才考虑keyup和keydown计数的问题。然而,keypress以某种方式使计数没有问题。我现在唯一的问题是,删除或退格在计数中不算作-减,我只在asci按键后得到计数。。