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

时间:2014-02-01 09:30:44

标签: javascript dom w3c

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

keydown keypress beforeInput (插入) input keyup

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

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

输入事件(大部分)看起来像这样:

  • bubbles:true
  • cancelBubble:false
  • cancelable:true
  • charCode:0
  • currentTarget:null
  • 数据:“我想要粘贴的文字”
  • detail:0
  • eventPhase:0
  • keyCode:0
  • returnValue:true
  • target:input
  • 类型:“textInput”
  • 其中:0

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

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

1 个答案:

答案 0 :(得分:2)

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

现在不是,但Editing task force目前有a draft spec扩展了InputEvent以允许通过.targetRanges

截至2016年4月,据我所知,这远远没有实施阶段。

调度事件不会修改输入值

DOM标准的§ 3.10. Action versus occurrence中描述的当前思路是:

  

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

     

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

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

模拟按键是缺少的功能之一。