Как определить событие изменения контента на div

Я пытаюсь сделать редактор все отлично работает до сих пор, но теперь мне нужно сделать обработчик, который мог бы обнаружить любые изменения, сделанные в div или любом содержимом, отредактированном в div

<?php $row="testing content" ?>
<!-- my editor section-->
<div id="editor">
    <div id="options">
        <span><a id="iimg">Insert Image from gallery</a></span>
        <span>Upload image to gallery</span>
        <span><a id="iheading">Heading</a></span>
    </div>
    <div id="product_descriptioncontent" contenteditable="true"><?php echo $row; ?>
    </div><!-- viewable editor -->
    <input type="hidden" name="textareacontent" value="" id="textareacontent" >
    <!-- hidden field to submit values -->
</div>
<!-- end of editor section -->
<div id="imc"></div> <!-- image gallery loading section -->

<script>
$(document).ready(function(){

    $('#iheading').click(function(){
    $('#product_descriptioncontent').append('<h1>Heading</h1>');
    });

    $('#iimg').click(function(){
        $('#imc').load('imagegallery.php',function(){
        $('#gallery img').on('click',function(){
            $('#product_descriptioncontent').append('<img  src="http://localhost/sites/site_pics/otherpic/1.png"><br>&nbsp;');
    });
    });
    });
    $('#product_descriptioncontent').change(function(){
    alert("pppp");// how to capture this event
    });
});
</script>

Я поместил немного своего кода в jsfiddle http://jsfiddle.net/bipin000/UJvxM/1/ спасибо за ваше драгоценное время

Ответ 1

Вам это нравится? http://jsfiddle.net/Ralt/hyPQC/

document.getElementById( 't' ).onkeypress = function( e ) {
    var evt = e || window.event
    alert( String.fromCharCode( evt.which ) )
}​

Он не ждет события change, это вроде бессмысленно.

Вместо этого он прослушивает событие onkeypress. Каждый раз, когда пользователь меняет содержимое этого div (добавляя к нему символ), он запускает событие.

Вы также можете увидеть, как получить нажатый символ (используя String.fromCharCode( evt.which )).

PS: полное решение jQuery для вашего конкретного случая будет следующим:

$( '#product_descriptioncontent' ).on( 'keypress', function() {
    $( '#your-hidden-input' ).val( $( this ).text() )
    // Or
    $( '#your-hidden-div' ).text( $( this ).text() )
} )

Ответ 2

Попробуйте этот пример, вы можете связать настраиваемое событие с div и вызвать это событие при изменении

Ответ 3

Попробуйте добавить обработчик для DOMCharacterDataModified. Возможно, это более чистое решение.