html - 将最后一个字符输入替换为内容可编辑的 div(尝试了所有选项)
问题描述
我有一个由内容可编辑 div 定义的消息框。用户可以在输入后编辑他们的消息,并且我有一个字符倒计时,但是当我剩下 0 个字符时,我无法找到合适的方法来删除最后一个字符或禁止最后的按键
当前方法只是将光标返回到消息的开头,而不删除字符。Iv 尝试了互联网上从拼接到正则表达式再到子字符串的几乎所有建议。我发现他们都没有工作。
我在下面向您展示的代码是我自己的代码并且有同样的问题,在 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');
}
}
解决方案
如果你想限制用户可以输入的字符数,你可以尝试这样的事情:
$(window).ready(()=>{
// our max number of characters
let max = 10;
// set the text of the div that allows the user to
// keep track of how many characters he can still input
$('#char-count').text(`remaining characters: ${max}`);
$('#message').on('keypress input paste', function(e){
// the number of characters in our content editable div
let charCount = $(this).text().length;
if(charCount >= max){
// prevent the user from typing
e.preventDefault();
}
$('#char-count').text(`remaining characters: ${max - charCount}`);
});
});
#message {
border: 1px dashed green;
height: 100px;
}
#char-count { :
margin-top: 10px;
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<div id="message" contenteditable="true"></div>
<div id="char-count"></div>
另外,这是一个工作示例:)
编辑
- 添加了对达到限制时防止复制和粘贴的支持。
推荐阅读
- angular - 如何按内容设置角度材质选项卡内容高度大小?
- python - 在python中升级包
- rust - 转换 Vec
到 std::rc::RC > - python - 使用 Python 自动化 WhatsApp 并存储 WhatsApp 登录信息
- c++ - 从欧拉角转换为四元数时,C++ 中的小数偏差太大
- javascript - 将背景图像设置为全屏 React
- c++ - 我应该始终编码哪些字符?
- javascript - 想要获取实例数而不是字符数的innerText的长度条件
- android - 如何从 android 手机发送图像以佩戴 os watch?
- java - 如何使用 Java 在 Swing GUI 中单击按钮时打开一个新窗口