Javascript IE11中的输入永远不会改变

Javascript IE11中的输入永远不会改变,javascript,internet-explorer-11,Javascript,Internet Explorer 11,我不确定我是疯了还是这是IE11中的一个bug 在IE11中打开此演示: 开始输入 当文本溢出时,您会注意到scrollLeft和scrollWidth值从未更改 设置正确。是否缺少获取正确滚动值的方法?我也在寻找解决此问题的方法。我花了一段时间才找到您的问题(并在寻找解决方案时编辑) 在此期间,我可以与你分享我发现的一些小作品 在文本区域中使用以下css属性,并将行数设置为1 <textarea id="demo1" cols="40" rows="1" style="white-

我不确定我是疯了还是这是IE11中的一个bug

  • 在IE11中打开此演示:

  • 开始输入

  • 当文本溢出时,您会注意到
    scrollLeft
    scrollWidth
    值从未更改

设置正确。是否缺少获取正确滚动值的方法?

我也在寻找解决此问题的方法。我花了一段时间才找到您的问题(并在寻找解决方案时编辑)

在此期间,我可以与你分享我发现的一些小作品

在文本区域中使用以下css属性,并将行数设置为1

<textarea id="demo1" cols="40" rows="1" style="white-space: nowrap; overflow: hidden;">Lorem ipsum dolor sit amet, vulputate molestie nec dui.</textarea>
Lorem ipsum door sit amet,vulputate molectie nec dui。
这将允许您使用文本区域,就像它是文本类型的输入一样。ScrollLeft在文本区域为IE工作

如果您碰巧在IE>9中找到输入scrollLeft属性的替代项,请共享! 我希望此解决方法对您有所帮助。

似乎只有“TextRange”对象(在Edge中已弃用)可以帮助您使用IE 11:

var getScrollLeftAndScrollWidth = function (inputElement) {
  var range = inputElement.createTextRange();
  var inputStyle = window.getComputedStyle(inputElement, undefined);
  var paddingLeft = parseFloat(inputStyle.paddingLeft);
  var paddingRight = parseFloat(inputStyle.paddingRight);
  var rangeRect = range.getBoundingClientRect();
  var scrollLeft = inputElement.getBoundingClientRect().left + inputElement.clientLeft + paddingLeft - rangeRect.left;
  var scrollWidth = Math.max(inputElement.clientWidth, paddingLeft + (rangeRect.right - rangeRect.left) + paddingRight);
  return {scrollLeft: scrollLeft, scrollWidth: scrollWidth};
};

谢谢这是一个有用的选择。。。我很确定这是一个IE11错误;)@莫蒂,没问题。在此期间,我将使用此替代方案。我想解决mistic100/jquery highlighttextarea插件中的一个bug。错误定义位于
var getScrollLeftAndScrollWidth = function (inputElement) {
  var range = inputElement.createTextRange();
  var inputStyle = window.getComputedStyle(inputElement, undefined);
  var paddingLeft = parseFloat(inputStyle.paddingLeft);
  var paddingRight = parseFloat(inputStyle.paddingRight);
  var rangeRect = range.getBoundingClientRect();
  var scrollLeft = inputElement.getBoundingClientRect().left + inputElement.clientLeft + paddingLeft - rangeRect.left;
  var scrollWidth = Math.max(inputElement.clientWidth, paddingLeft + (rangeRect.right - rangeRect.left) + paddingRight);
  return {scrollLeft: scrollLeft, scrollWidth: scrollWidth};
};