以前から不思議に思っていたがここに答えがあった!
http://www.divakk.co.jp/blog/aoyagi/archive/2005/03/14/1471.aspx
「Google サジェストとアラート」 で書いた Google サジェスト(日本語版) ですが、使ってみて 「おや?」 と思うことがありました。IME で漢字を入力しようとすると、確定していなくてもサジェストが表示されるんです。どうやっているのか気になってました。
で、試したコード。
以前から不思議に思っていたがここに答えがあった!
http://www.divakk.co.jp/blog/aoyagi/archive/2005/03/14/1471.aspx
「Google サジェストとアラート」 で書いた Google サジェスト(日本語版) ですが、使ってみて 「おや?」 と思うことがありました。IME で漢字を入力しようとすると、確定していなくてもサジェストが表示されるんです。どうやっているのか気になってました。
で、試したコード。
IME がオンのあいだもキーアップするたびに keyup は呼ばれるようです。keydown は呼ばれてるような呼ばれてないようなよくわからない感じです。
また、 要素の value は IME で入力中の読みも含めて返されるようです。
と言うわけで、別に特別なことはしなくても、keyup のタイミングで value を参照すれば確定前の文字列も含めた文字列が取り出せます。
上記は Windows 2000 Professional、IE6 SP1、IME は Win2000 標準のやつ、という環境で試した結果です。OS、IE、IME が違えば動作は違ってくると思いますし、ブラウザが IE 以外の場合はぜんぜん違う結果になる可能性が大だと思います。
で、FireFox 1.0 で同じような感じで試してみたら、IME がオンのあいだは keydown も keyup も呼ばれないみたいです。それじゃあということで、
こんな風にして、100ミリ秒おきに 要素の value がどうなっているのか表示されてみました。すると、ちゃんと IME で入力中の読みも含めて取りだせました。