1. ホーム
  2. javascript

[解決済み] contenteditable変更イベント

2022-02-10 05:32:16

質問

の内容をユーザーが編集したときに、ある関数を実行したい。 divcontenteditable 属性があります。に相当するものは何でしょうか? onchange イベントを使用できますか?

私はjQueryを使用しているので、jQueryを使用するソリューションが望ましいです。ありがとうございます。

どのように解決するのですか?

編集可能な要素で発生する主要なイベントにリスナーをアタッチすることをお勧めします。 keydownkeypress イベントは、コンテンツそのものが変更される前に発生します。これは、コンテンツを変更するためのあらゆる手段をカバーするものではありません。ユーザーは、編集やコンテキストブラウザのメニューからカット、コピー、ペーストを使用することもできますので、そのような場合には cut copypaste イベントもあります。また、ユーザーはテキストや他のコンテンツをドロップすることができるので、そちらのイベントも多くなります ( mouseup など)。フォールバックとして、要素のコンテンツをポーリングするとよいでしょう。

UPDATE 2014年10月29日

HTML5 input イベント が長期的には答えとなる。執筆時点では、以下のものがサポートされています。 contenteditable 要素は、現在の Mozilla (Firefox 14 以降) と WebKit/Blink ブラウザで使用できますが、IE では使用できません。

デモです。

document.getElementById("editor").addEventListener("input", function() {
    console.log("input event fired");
}, false);
<div contenteditable="true" id="editor">Please type something in here</div>

デモの様子 http://jsfiddle.net/ch6yn/2691/