jQuery UI のAutocompleteウィジェットで日本語入力をすると選択入力した内容が正しく確定されない挙動があった。
調べてみるとAutocompleteをそのまま使うと入力が確定しない間もいちいち検索が走ったり、入力確定のEnterを拾ってくれなかったりすることがあるらしい。これはAutocompleteの問題というよりはブラウザの実装の違いの問題だそうだ。 Autocompleteで日本語入力をするときの対策も示されていたので早速試してみた。
日本語入力を行う場合には次のようにAutocompleteを使う。
$( function(){ // Autocompleteウィジェットの生成 $('#autocomplete').autocomplete({ source: ['東京都', '神奈川県', '北海道', '青森県', '熊本県', '広島県', '愛知県'], search: function(event, ui){ if (event.keyCode == 229) return false; return true; }, open: function() { $(this).removeClass("ui-corner-all"); } }) .keyup(function(event){ if (event.keyCode == 13) { $(this).autocomplete("search"); } }); } );
上記の12~23行を追加したところ、おかしな動きはなくなった。