jQuery.suggestをIEの日本語に対応

このエントリーをはてなブックマークに追加

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/926
コメント

jquery.suggest.jsを使ってみましたが、日本語だとIME変換中のキー入力をKeyDown(KeyPress)イベントで取ってくれないようで、日本語の場合はそのへんも直してあげる必要があるっぽいです。
自分はタイマーで$input.val()の中身をチェックする方法にしました。

投稿者:しょぼた | 2009年11月 7日 00:31

>しょぼたさん

そういう記事もいくつか見たんですが、私が作ったサイトではKeyDownは正常にうごいてるんですよね。逆にmozilla系のkeypressが動かなかったのでkeyupに変更しました。

ちょっと環境依存が大きそうなので記事中ではふれておりません。

投稿者:西畑一馬 | 2009年12月25日 07:16
コメントを投稿