さんまがおいしい季節だねー(´・ω・`)

JavaScriptでtextareaのキーボード入力イベントをハンドリングする方法2011年版

JavaScript — タグ: , , — さくら @ 2011/02/03 2:04

JavaScript プログラマなら、textarea のキーボード入力イベントのハンドリングで一度は苦労したんじゃないかと思います。かく言う私も何度も苦労させられてまっすw

で、JavaScript で textarea のキーボード入力イベントを補足する場合、onblur onfocus onchange onkeyup イベントハンドラで行うのが一般的だと思っていたのですが、mozilla(firefox 等)の場合 onkeyup の代わりに onpaste oninput をハンドリングするのが良いようです。

ちーと例示がめんどくさいので jQuery 使ってサンプルコードを書きますとこんな感じになります。

var events = 'blur focus change ' +
             ($.browser.mozilla ? 'paste input' : 'keyup');
$('textarea').bind(events, function() {
    // イベントハンドラ
});

これで textarea にキーボード入力が発生したり、マウスで focus/blur したりといった、ユーザーからの I/O はだいたい補足できると思います。

ちなみに onpaste は Mozilla のイベントで、oninput は HTML5 のイベントのようです。

んーっと、上のコード Twitter の JavaScript からパクってきたを参考にしたんですが、onpaste が Firefox3 以降なので Firefox2 以下だと textarea が更新されてから change がイベントされないとトリガできないような気もしますが…
まーえーかww

2件のコメント »

  1. hXlyZPHnnIRGXQGvJT 8554

    コメント by aLXEVGkKbvfgLLF — 2014 年 10 月 5 日 @ 17:53
  2. Thanks for every other fantastic article. Where else may just anyone get that kind
    of info in such a perfect means of writing? I have a presentation next week, and I am at the look for such information.

    コメント by 1 — 2016 年 10 月 13 日 @ 23:33

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2017 さくらたんどっとびーず | powered by WordPress with Barecity