Vous pouvez simplement utiliser l'événement focus/blur avec la fonction data() de jQuery :
// Find all editable content.
$('[contenteditable=true]')
// When you click on item, record into data("initialText") content of this item.
.focus(function() {
$(this).data("initialText", $(this).html());
});
// When you leave an item...
.blur(function() {
// ...if content is different...
if ($(this).data("initialText") !== $(this).html()) {
// ... do something.
console.log('New data when content change.');
console.log($(this).html());
}
});
});
UPDATE : Avec Vanilla JS
// Find all editable content.
var contents = document.querySelectorAll("[contenteditable=true]");
[].forEach.call(contents, function (content) {
// When you click on item, record into `data-initial-text` content of this item.
content.addEventListener("focus", function () {
content.setAttribute("data-initial-text", content.innerHTML);
});
// When you leave an item...
content.addEventListener("blur", function () {
// ...if content is different...
if (content.getAttribute("data-initial-text") !== content.innerHTML) {
// ... do something.
console.log("New data when content change.");
console.log(content.innerHTML);
}
});
});
2 votes
Duplication possible de événements de changement de contenu
0 votes
Ajout d'une nouvelle réponse aquí