2011-10-18 12 views
15

contenteditable属性のHTML要素のfocusまたはchangeのようなイベントを聴く方法があるかどうかを判断しようとしています。私は、任意の成功(JSBin)せずに、これらを試してみたコンテンツ編集可能なHTML要素のイベントをリッスンする

<p id="test" contenteditable >Hello World</p> 

::私は、キーボードやマウスのイベントに耳を傾ける必要はありません

var test = document.querySelector('#test'); 
test.addEventListener('change', function(){ 
    alert('content edited'); 
}, false); 
test.addEventListener('DOMCharacterDataModified', function(){ 
    alert('content edited'); 
}, false); 
test.addEventListener('focus', function(){ 
    alert('content edited'); 
}, false); 

私はこのHTMLマークアップを持っています。 W3CMDNについては、明確な文書が見つかりませんでした。contenteditableです。

changefocusや他のイベントをコンテンツ編集可能なHTML要素で聞くことはできますか?

+0

この質問の2番目の回答を確認してください.http://stackoverflow.com/questions/1391278/contenteditable-change-events – rwilliams

答えて

21

contenteditable要素にはchangeイベントはありません。また、HTML5 inputイベントもありませんが、最終的には表示されると思います。それは痛みです。


UPDATE 2012年6月23日

DOMCharacterDataModifiedがするようにFirefoxの14


focusが、しかし、仕事をしないよう最新のWebKitは、contenteditable要素にHTML5 inputイベントをサポートしていますほとんどのブラウザでは(IEは特にないが< 9)。 http://jsfiddle.net/UuYQH/112/

ちなみに、contenteditableは、 "true"、 "false"、 "inherit"および空の文字列(これは "true" )。

+0

ありがとうございます、あなたのフィドルは私のChromeで動作していません。また、 'contenteditable'は私が思うに、文書に基づいて正しいです – Mohsen

+0

@Mohsen:Chromeの私のために働きます。たぶんはっきりしないかもしれませんが、考えられるのは、イベントをログに記録するためにそこにあるテキサレアではなく、上部にcontenteditable divを入力することです。 –

+0

@Mohsen: 'contenteditable'属性のHTML5仕様へのリンクを追加しました。ここにあります:http://www.w3.org/TR/html5/editing.html#contenteditable –

2

この例をチェックアウト、私はこれはちょっと遅れている知っているが、jQueryの焦点で動作するようです:

http://jsfiddle.net/powerphillg5/EGtSC/

$("#test").focus(function(){ 
    $("#log").append("<li>Item Focused</li>"); 
}); 

を、私はこのことができます願っていますが、そうでない場合は、あなたが私を探していたものを謙虚に投票を受け入れるだろう。

1

ぼかし(フォーカスが失われたとき)と両方の作業に焦点を合わせます。少なくともjQueryの場合。 contentEditableが帰りIE 5.5で導入された

$("#test").blur(function(){ 
    $("#log").append("<li>Item lost focus</li>"); 
}); 
1

クローム28とSafari 6でテスト 、それには、JavaScript 1.1/1.2 APIによってサポートされていましたし、後でDIVのに、アイフレームに最初に適用されます。それはある程度すべてのブラウザでサポートされています。 HTML5仕様では、ほとんどの要素がこの属性を受け入れることができます(ただし、下位互換性に注意してください)。 onchangeイベントのサポートは、もともと設計されていたフォーム要素にはこの属性とはほとんど関係なく適用されます。あなたのオプションはまだキャプチャするのが簡単なキー押下イベントであり、ターゲット要素フォーカスのチェックと組み合わせると、オンキーと同様の結果が得られます。エッジケースには理想的ではないかもしれませんが、ほとんどの場合、このルートとそれに対応する最も後方の互換性があります。

関連する問題