我正在尝试尽可能精确地更新文本输入的值,以及DOM级别3规范。
keydown
keypress
beforeInput
(插入)
input
keyup
简单地触发上述事件不会将字符插入字段中,我相信这是大多数浏览器的标准。
所以我需要在调度e.target
事件之前将字符添加到input
的值。
输入事件(大部分)看起来像这样:
没有关键的位置值,所以我不确定将data
属性添加到目标的位置!
我需要保存的keydown事件中是否有任何数据,然后等待紧接着的输入事件?我是否可以仅根据输入事件给出的信息将数据添加到输入中?
答案 0 :(得分:2)
现在不是,但Editing task force目前有a draft spec扩展了InputEvent
以允许通过.targetRanges
。
截至2016年4月,据我所知,这远远没有实施阶段。
DOM标准的§ 3.10. Action versus occurrence中描述的当前思路是:
事件表示发生,而不是动作。换句话说,它表示来自算法的通知,并且可以用于影响该算法的未来进程(例如,通过调用preventDefault())。 不得将事件用作导致某些算法开始运行的操作或启动器。这不是他们的目的。
这里特别指出这是因为DOM的先前迭代有一个与事件相关的“默认动作”的概念,这些事件给了人们所有错误的想法。事件不代表或引起行动,它们只能用于影响正在进行的事件。
这确实意味着平台中有很多缺少的API来启动浏览器当前为响应用户输入而自动启动的操作...
模拟按键是缺少的功能之一。