LoginSignup
0
2

More than 5 years have passed since last update.

autoRuby的なやつを実装してみた。今更。

Posted at

東京でへっぽこフロントエンドエンジニアやってるshun1982です。

近頃、所属プロジェクトで「氏名」->「フリガナ」の入力補助機能を実装することになった。。OTL
ふつふつと湧き上がる今更感は否めませんが、とりあえず個人用にメモ。。

[jquery.autoKana.js]https://github.com/harisenbon/autokana
も視野に入れたけど、なんか個人的には最終兵器的な感じがしてたので、jQuery挟んでますが、独自実装。

想定するDOM

<input type="text" name="name_first" class="js-nameFirst"> #姓
<input type="text" name="name_ruby_first" class="js-nameRubyFirst"> #セイ

こんな感じの「姓」と「セイ」のフィールド。
PCとかSPとかで、「姓」に入力してたら自動的にフリガナ入力してくれたらいいな(・∀・)

方針

考えたのは、姓の入力って、
予測変換とかでさくっと入れられちゃう場合を除いて、PC・SP・英語入力・日本語入力問わず、
田中さんだったら、「た」→「たな」→「たなか」→「田中」となる気がする。

ということで、
この「たなか」を取得すれば、あとはカタカナ変換すればいいだけだし、なんとかなるんじゃないかという予感。

コード

var autoInputNameRuby = function(inputName, inputNameRuby) {
    var ruby = $(inputName).val();
    if (ruby.match(/^[\u3040-\u309F]+$/) || ruby === '') {
        ruby = ruby.replace(/[ぁ-ん]/g, function(str) {
            return String.fromCharCode(str.charCodeAt(0) + 0x60);
        });
        $(inputNameRuby).val(ruby);
    }
};  
$('.js-nameFirst').on('keyup', function(e){
    autoInputNameRuby(e.target, '.js-nameRubyFirst');
});

こんな感じで、

keyupの度に値を取得して、ルビにするかどうかを都度見るように。
取得した値が、漢字になったらもういらない(-_-)/~~~ピシー!ピシー!
という感じにした。

なんかいい他の方法ないでしょかね。

おわり

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2