jQuery.suggestをIEの日本語に対応
HP登録でSEO対策!アクセスアップにコチラ!![]()
検出率No.1・PC軽快さNo.1のウイルス対策ソフト
jQuery.suggestでサジェスト機能を実装しようとしたところIEでの日本語の認識が上手に行きませんでした。
調べてみたところ原因は100行目あたりの以下のコード。
} else if ($input.val().length != prevLength) {
if (timeout)
clearTimeout(timeout);
timeout = setTimeout(suggest, options.delay);
prevLength = $input.val().length;
}
文字数で変化を取得しているので、たとえば「か」と入力したい場合、最初の「k」を入力した時点でサジェスト機能が動作し、「a」を入力して「か」になった段階では文字数が変わらないのでサジェスト機能が動作しない形になる。
} else if ($input.val() != prevLength) {
if (timeout)
clearTimeout(timeout);
timeout = setTimeout(suggest, options.delay);
prevLength = $input.val();
}
このように.lengthを取ってやればちゃんと動作します。
関連エントリー
8のjQueryのすごいTIPS
jQueryを良くする25のTIPS
jQueryのコードを良くする5つのTIPS
jQueryを使ったサンプルコード
スポンサードリンク
«[ASCII.jp]初めてのjQuery:セレクターAPIを一挙解説 | メイン | Web creators (ウェブクリエイターズ) 2009年 09月号»
- このエントリーのトラックバックURL
- http://blog.webcreativepark.net/cgi/mt/mt-bt.cgi/634

西畑一馬(



jquery.suggest.jsを使ってみましたが、日本語だとIME変換中のキー入力をKeyDown(KeyPress)イベントで取ってくれないようで、日本語の場合はそのへんも直してあげる必要があるっぽいです。
自分はタイマーで$input.val()の中身をチェックする方法にしました。
>しょぼたさん
そういう記事もいくつか見たんですが、私が作ったサイトではKeyDownは正常にうごいてるんですよね。逆にmozilla系のkeypressが動かなかったのでkeyupに変更しました。
ちょっと環境依存が大きそうなので記事中ではふれておりません。