Aqui está o problema que tenho que resolver hoje. Temos um elemento com contenteditable
atributo, para que o usuário possa editá-lo. Agora, como saber quando o usuário o alterou?
Vamos fazer um contenteditable
elemento:
<div id="text" contenteditable>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at arcu ac dui eleifend suscipit a ut est. Ut iaculis ut massa non accumsan. Quisque hendrerit nisl at egestas cursus.
</div>
Nada extravagante, apenas um div simples.
Como os contenteditable
elementos não possuem change
eventos, minha primeira ideia foi usar eventos-chave. É uma boa ideia, mas não foi bom para mim. Após uma pesquisa rápida, encontrei a solução – input
evento.
input
O evento é disparado quando algo em um elemento input
ou textarea
muda e também é disparado quando algo muda em elementos com contenteditable
atributo. Perfeito!
Aqui está um exemplo de função que é disparada quando o conteúdo de contenteditable
é alterado:
var editable = document.getElementById('text');
editable.addEventListener('input', function() {
console.log('Hey, somebody changed something in my text!');
});
Você pode ler mais sobre o input
evento no MDN . Atualmente, esse recurso está disponível apenas no Chrome, Firefox 14+ e Safari.