首页 > 解决方案 > window.getSelection().toString() 在 IE 11 上不起作用

问题描述

我有一个输入字段。我想限制用户最多输入十个字符。下面的代码适用于 Chrome,但不适用于 IE 11。我希望当有人突出显示文本时,他们应该能够替换它。在 IE11 中,当我突出显示文本时,我无法替换它,可能 getSelection().toString() 不起作用。

$('#demo').on('keydown', function(event) {
  var selection = window.getSelection().toString();
  alert(selection);
  var value1 = document.getElementById("demo").value;
  if (value1.length === 10 - selection && event.keyCode != 8) {
    event.preventDefault();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input contenteditable="true" value="mm/dd/yyyy" id="demo" style="border:none;width:80px;" />

标签: javascriptjqueryinternet-explorer

解决方案


$("#demo").keydown(function(event) {
  var value = this.value;
  // var sel = window.getSelection().toString();
  var sel = value.substring(this.selectionStart, this.selectionEnd);
  if (value.length === 10 - sel && event.keyCode != 8) {
    event.preventDefault();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input contenteditable="true" value="mm/dd/yyyy" id="demo" style="border:none;width:80px;" />


推荐阅读