用于输入中文(ibus)的JQuery / DOM事件?

时间:2011-08-30 15:03:43

标签: javascript jquery dom cjk ime

我们知道在输入时会触发很多事件。

,例如keyup,keydown,keypress或其他。

仅当文本字段中的内容发生更改时,是否还会触发其他事件?如果没有,如何写一些javasrcipt代码来完成这个功能

2 个答案:

答案 0 :(得分:2)

change事件可能会有所帮助吗?

答案 1 :(得分:0)

我已经创建了一个简单的小提琴,用于确定当按键修改一个contenteditable元素中的文本节点时会发生什么。当我这样做时,我决定检查使用ibus时会发生什么,因为我使用ibus进行自己的工作。我确定当使用ibus时,生成的唯一键盘事件是一个which值没有用的键盘事件。

这是我创造的小提琴:

http://jsfiddle.net/lddubeau/jWnL3/

  1. 去那个小提琴。

  2. 开启您的Javascript控制台。

  3. 点击运行。

  4. 点击“toto”一词的2dn和第三个字符。

  5. 使用ibus输入内容。例如,键入我。

  6. 输出因浏览器而异。在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。)

  7. 其值和keyCode似乎不对应任何合理的。我已经检查了传递给事件处理程序的事件对象,并没有看到任何表明用户只输入我的字段。