2014年6月7日土曜日

Select2で半角・全角カナ

WebアプリケーションのセレクトボックスにSelect2を使っている。
日本語化も出来たりとかなり便利だ。
ただ、あまりない要望だろうが、検索で半角カナ・全角カナ両方に掛かって欲しい時がある。
どうにかならないものか。
ソースを追いかけたところ、select2_locale_ja.js のように拡張して matcher を変更すればどうにかなりそうだ。

(function ($) {
  "use strict";
  $.extend($.fn.select2.defaults, {
    // … 省略
    // 半角カナ・全角カナ両方にマッチ
    matcher: function(term, text) {
      term = toKanaZenkaku(term);
      text = toKanaZenkaku(text);
      return window.Select2.util.stripDiacritics(''+text).toUpperCase().indexOf(
      window.Select2.util.stripDiacritics(''+term).toUpperCase()) >= 0;
    }
  });
})(jQuery);

なお、半角カナ全角カナの変換には以下を利用させて頂いた。
半角カナを全角カナに変換するJavaScript