正如我们所知,当我们打字时会触发很多事件。
例如keyup,keydown,keypress或其他东西。
是否只有当文本字段中的内容发生更改时才会触发其他事件?如果没有,如何编写一些 javasrcipt 代码来完成此功能
正如我们所知,当我们打字时会触发很多事件。
例如keyup,keydown,keypress或其他东西。
是否只有当文本字段中的内容发生更改时才会触发其他事件?如果没有,如何编写一些 javasrcipt 代码来完成此功能
更改事件可能会有所帮助?
我创建了一个简单的小提琴来确定当 contenteditable 元素中的文本节点被按键修改时会发生什么。当我这样做时,我决定检查使用 ibus 时会发生什么,因为我将 ibus 用于我自己的工作。我确定当使用 ibus 时,生成的唯一键盘事件是一个 keyup 事件,其which
值是无用的。
这是我创建的小提琴:
http://jsfiddle.net/lddubeau/jWnL3/
去那个小提琴。
打开你的 Javascript 控制台。
点击运行。
在单词“toto”的 2dn 和第三个字符之间单击。
使用 ibus 输入内容。例如,键入我。
输出因您的浏览器而异。在 Chrome 29 上,每次击键都会被记录,所以如果我使用tonepy 方法键入我,我会为“w”“o”“3”和“1”中的每一个得到 keyup 和 keydown。(拼音,声调,然后按1选择第一个选项。)最后的事件是:
event type: keyup
which: 229
keyCode: 229
charCode: 0
node value:
to我to
在此之前的事件都具有相同的值,除了一些是“keydown”类型,当然节点值显示“toto”直到最后一个事件。
在 Firefox 23 上只注册了一个事件:
"event type:" "keyup"
"which:" 49
"keyCode:" 49
"charCode:" 0
"node value:" "
to我to
"
不会生成 keydown 或 keypress 事件。(当键入 ascii 范围内的字符时,您会得到每个键的 keydown、keypress 和 keyup。)
which 和 keyCode 的值似乎与任何合理的值都不对应。我检查了传递给事件处理程序的事件对象,没有看到任何表明用户刚刚输入了我的字段。