如何以编程方式使用JavaScript事件输入文本

alt*_*alt 5 javascript w3c dom

我正在尝试尽可能精确地更新文本输入的值与DOM级别3规范.

keydown keypress beforeInput (插入) input keyup

简单地触发上述事件不会将字符插入到字段中,我相信这是大多数浏览器的标准.

所以我需要e.target在调度input事件之前将字符添加到's值中.

输入事件(大多数)看起来像这样:

  • 泡沫:真的
  • cancelBubble:false
  • 可取消:是的
  • charCode:0
  • currentTarget:null
  • 数据:"我想要粘贴的文字"
  • 细节:0
  • eventPhase:0
  • keyCode:0
  • returnValue:true
  • 目标:输入
  • 类型:"textInput"
  • 其中:0

没有关键位置值,所以我不确定将data属性添加到目标的位置!

我需要保存的keydown事件中是否有任何数据,然后等待紧接着的输入事件?我是否可以仅根据输入事件给出的信息将数据添加到输入中?

Nic*_*lay 3

我可以仅根据输入事件给出的信息将数据添加到输入吗?

\n

现在还不行,但编辑工作组目前有一个规范草案,该规范扩展了InputEvent允许通过.targetRanges.

\n

据我所知,截至 2016 年 4 月,这还远未达到实施阶段。

\n

调度事件不会修改输入的值

\n

目前的思路,如\xc2\xa7 3.10中所述。DOM 标准的动作与发生是:

\n
\n

事件表示发生的事情,而不是动作。换句话说,它表示来自算法的通知,并且可用于影响该算法的未来进程(例如,通过调用 PreventDefault())。事件不得用作导致某些算法开始运行的操作或启动器。这不是他们的目的。

\n

之所以在这里特别指出这一点,是因为 DOM 的先前迭代有一个与事件相关的“默认操作”概念,这些事件给人们带来了所有错误的想法。事件并不代表或导致行动,它们只能用来影响正在进行的行动。

\n
\n

这确实意味着平台中缺少许多 API 来启动浏览器当前自动启动的操作以响应用户的输入...

\n

模拟按键就是此类缺失的功能之一。

\n