[javascript] contenteditable の要素から change イベントを発火する

2018年8月16日木曜日

javascript

t f B! P L
[javascript] contenteditable の要素から change イベントを発火する

[javascript] contenteditableで編集可能にした要素から change イベントを発火する

はじめに

HTMLの div タグ等に contenteditable 属性を付けると、その要素が編集可能になる。
参考リンク:君はHTML5の contentEditable 属性を知っているか

しかし、通常のテキストフィールドとは異なり、
キーボードでテキストの内容を変更しても、
onchnage イベントが発火してくれません。

そこで、javascript でキーボード操作、コピペ等の操作を関して、
テキストの内容が変わったら、onchnage イベントを発火する
サンプルコードを紹介したいと思います。

コード

下のコードを、load 時に走らせておきます。

$(function() {
  $("[contentEditable]").each(function () {
    var $this = $(this);
    var htmlOld = $this.html();
    $this.on('blur keyup paste copy cut mouseup', function() {
        var htmlNew = $this.html();
        if (htmlOld !== htmlNew) {
            $this.trigger('change');
            htmlOld = htmlNew;
        }
    })
  });
 });

あとは、普通のイベントと同じように、イベントの発火を検知して、
やりたい処理を行います。

  $("[contentEditable]").on("change", function() {
 console.log($(this).text());
  });
スポンサーリンク

QooQ