Javascript MaxLength 与 contenteditable

标签 javascript jquery

我想限制用户最多输入十个字符。我能够这样做,但是当我选择文本并尝试替换它时,我无法这样做。例如:如果我突出显示“mm”,那么我无法替换它,因为最大长度是 10。在具有最大长度的情况下如何才能做到这一点? 这是我的 js 函数:

$('div').on('keydown', function(event) {
  $('span').text('Total chars:' + $(this).text().length);
  if($(this).text().length === 10 && event.keyCode != 8) {
    event.preventDefault();
  }
});

enter image description here

最佳答案

使用突出显示的文本长度作为参数

$('div').on('keydown', function(event) {
  var selection = window.getSelection().getRangeAt(0);
  $('span').text('Total chars:' + $(this).text().length);
  if($(this).text().length === 10-selection && event.keyCode != 8) {
  	event.preventDefault();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div contenteditable="true">mm/dd/yyyy</div>
<span></span>

关于Javascript MaxLength 与 contenteditable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62021671/

相关文章:

javascript - Fullcalendar.io 将事件属性解析为函数时出现问题

javascript - find ('a,b' ) 比 find ('a' )+find ('b' 慢,为什么?

javascript - 滚动 Div 到子项相对于自身的偏移量

jquery - 使用jQuery统一改变同类图像的宽度?

javascript - JQuery:单击 #element 以外的任何位置

javascript - 检测浏览器是否可以显示 pdf 内联

javascript - javascript中树的广度优先遍历

javascript - 了解操作是否成功或被 promise 拒绝

javascript - jQuery - 单击复选框添加类和删除类

javascript - 如何在动态图像表上添加叠加标签?