2011-08-30 18 views
5

ya que sabemos que se dispararán muchos eventos al escribir.Evento JQuery/DOM para escribir chino (ibus)?

como keyup, keydown, pulsación de tecla o algo más.

es que habrá activa cualquier otro evento solamente cuando se cambia el contenido del campo de texto? y si no hay, cómo escribir algún código javasrcipt para lograr esta función

+0

¿Te importaría más sobre tu caso de uso? quizás la única manera de lograr eso es proporcionarle un método de entrada basado en la web. –

Respuesta

2

El evento change podría ayudar?

+0

No, porque el cambio detecta si el contenido en el campo se cambia o no, pero no se activará a menos que presione enter o el campo pierda el foco – castiel

+0

Antes de confirmar la cadena (como presionar "enter"), la cadena se almacena realmente en el búfer preedit del método de entrada. es decir, el navegador no sabrá exactamente qué escribe antes de enviar la cadena. –

0

He creado un violín simple para determinar qué sucede cuando un nodo de texto en un elemento contenteditable se modifica presionando una tecla. Mientras hacía eso, decidí verificar qué sucede cuando uso ibus porque uso ibus para mi propio trabajo. Decidí que cuando se usa ibus, el único evento de teclado generado es un evento de teclado con un valor de which que es inútil.

Aquí es el violín creé:

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

  1. ir a ese violín.

  2. Enciende la consola Javascript.

  3. haga clic en Ejecutar.

  4. Haga clic entre el carácter 2dn y el tercer carácter de la palabra "toto".

  5. Tipo algo con ibus. Por ejemplo, escribe 我.

  6. La salida varía dependiendo de su navegador. En Chrome 29, se registra cada pulsación de tecla, de modo que si escribo 我 utilizando el método de tonetone, obtengo una clave y una clave para cada una de las "w" "o" "3" y "1". (El pinyin, el tono y luego oprimir 1 para seleccionar la primera opción.) El evento final es:

    event type: keyup 
    which: 229 
    keyCode: 229 
    charCode: 0 
    node value: 
        to我to 
    

    Los eventos antes de éste todos tienen los mismos valores, excepto que algunos son del tipo "keydown" y por supuesto, el valor del nodo muestra "toto" hasta el último evento.

    En Firefox 23 solo evento se registra: se generan eventos

    "event type:" "keyup" 
    "which:" 49 
    "keyCode:" 49 
    "charCode:" 0 
    "node value:" " 
        to我to 
    " 
    

    Sin keydown o de pulsación de teclas. (Al escribir caracteres dentro del rango ASCII, se obtiene keydown, pulsación de tecla y keyup para cada tecla.)

Los valores de los cuales keyCode y no parecen corresponder a algo sensato. He examinado el objeto de evento pasado al controlador de eventos y no he visto ningún campo que indique que el usuario acaba de escribir 我.

Cuestiones relacionadas