[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
編集可能な要素。例えば、この赤い文字は contenteditable なので編集できるはず。
input じゃない要素を入力欄にしたい時に contenteditable は便利に見える。しかし、こいつ、 change イベントが発火しないのだ。change イベントをトリガーにして何かするのには使えない。
<div id='all'>
<div name='a' contenteditable='true' style='border:3px solid black;'>ひつつん</div>
<div name='b' contenteditable='true' style='border:3px solid black;'>ちわわとちくわ</div>
<div name='c' contenteditable='true' style='border:3px solid black;'>ひよよん</div>
<input name='d' type='text' value='これは特に設定しなくても change イベントが発生する' />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$('#all').change(function(e){alert($(e.target).attr('name'));});
</script>
次の JavaScript を埋め込むことで contenteditable に変更が発生した場合に change イベントを発火させられる。とりあえず手元の Google Chrome と FireFox では問題なく動いた。
function bindContenteditableChangeEvent(){
var $contenteditables = $("[contenteditable='true']");
var text = '';
$contenteditables.on('focus', function(e){
text = $(e.target).html();
});
$contenteditables.on('focusout', function(e){
if(text !== $(e.target).html()){
$(e.target).trigger(new $.Event('change'));
}
});
}
bindContenteditableChangeEvent();ただいまコメントを受けつけておりません。