javascript - oninput ="function()"适用于 textarea,但不适用于 Safari 中的 div。为什么?

标签 javascript html css contenteditable

在 OSX 10.12.6 下测试并使用 Safari 11.0.1;

我想使用 oninput="function()"<div>contenteditable="true"放。准系统测试页案例适用于 <textarea> , 但不是 <div> .这是测试代码;首先更改脚本 var load getElementByIdtpagecontentxdpagecontentx 的参数可以看到它与 textarea 一起使用而不与 div 一起工作。

<HTML>
  <HEAD>
    <SCRIPT>
      function onCharInput()
      {
        var conpagechars = document.getElementById("tpagecontentx").value;
        var conpagecharcount = conpagechars.length.toString();
        document.getElementById("pccount").innerHTML = conpagecharcount;
      }
    </SCRIPT>
    <title>Editor</title>
  </HEAD>
  <BODY>
    <center>
      <div id="dpagecontentx" oninput="onCharInput()" name="dpagecontent" contenteditable="true" style="font-family: Courier; padding: .5em; text-align: left; border-color: #000000; border-width: 1px; border-style: solid; width: 60em; height: 24em;"></div>
      <TEXTAREA id="tpagecontentx" oninput="onCharInput()" NAME="tpagecontent" ROWS=10 COLS=80>foo</TEXTAREA>
    </center>
    <p>
      Content Size: <span id="pccount"></span>
    </p>
  </BODY>
</HTML> 

最佳答案

oninput仅当 <input> 的值时才会触发事件, <select> , 或 <textarea>元素已更改,对于 <div>标签 你可以使用 keyup事件来检测变化,这是工作示例:

function onCharInput(e)
{
  // here I use tagName property to get the element content
  // according to its type
  if (e.target.tagName === 'DIV') {
    var conpagechars = document.getElementById("dpagecontentx").innerText; 
  } else {
    var conpagechars = document.getElementById("tpagecontentx").value;
  }

  var conpagecharcount = conpagechars.length.toString();
  document.getElementById("pccount").innerHTML = conpagecharcount;
}
<center>
<div id="dpagecontentx" onkeyup="onCharInput(event)" name="dpagecontent" contenteditable="true" style="font-family: Courier; padding: .5em; text-align: left; border-color: #000000; border-width: 1px; border-style: solid; width: 60em; height: 24em;"></div>
<TEXTAREA id="tpagecontentx" oninput="onCharInput(event)" NAME="tpagecontent" ROWS=10 COLS=80>foo</TEXTAREA>
</center>
<p>
Content Size: <span id="pccount"></span>
</p>

关于javascript - oninput ="function()"适用于 textarea,但不适用于 Safari 中的 div。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378087/

相关文章:

javascript - 我有一个 header.jsp,它的样式会随着不同的登录而不断变化,它是一个动态标题

JavaScript 将名称转换为大写,Mc/Mac/etc 除外

html - 如何在跨多行的伪元素中显示文本?

javascript - 自定义复选框不选中

javascript - Bootstrap 开关句柄宽度问题

javascript - 使用 Angular 数据表动态更改列

html - svg 六边形半色调图案

css - 由于某些未知原因,用 CSS 制作的类不会影响 HTML

c# - 使用C#动态生成CSS文件

javascript - 如何在 Jquery 中找到一条线的中点?