2010-11-04 7 views

Répondre

1

Malheureusement, je lance Linux donc je ne peux pas tester IE, mais il fonctionne dans

Chrome et Firefox
document.getElementById("foo").onkeyup = function (event) { 
    // Firefox doesn't like innerText 
    var content = this.innerText || this.innerHTML; 

    // this replace strips whitespace (can be removed if needed) 
    if (content.replace(/\s/g, "").length === 0) { 
     this.blur(); // when using an alert, the onkeyup event will fire again if you hit enter... 
        // this removes the focus beforehand 
        // (can be removed if you are not using an alert box or something similar) 

     alert("content deleted"); 
    } 
}; 
+0

Ayant lu https://developer.mozilla.org/en/whitespace_in_the_dom I pense que l'expression rationnelle pourrait être plus robuste si elle était: /[\ t \ n \ r] +/g –

0
var empty=document.getElementById("foo").innerHTML.replace(/<[^>]*>/g,"").replace(/ /g,"").length==0; 
+0

Ceci n'est pas une réponse – Harmen

+0

@Harmen: Et pourquoi? – thejh

+0

"Je voudrais savoir si le contenu de la div éditable ci-dessous a été supprimé.", Pas: "Je voudrais supprimer le contenu de la div editable";) – Harmen

0

Il n'y a aucun événement onchange, mais il y a un événement onkeyup:

document.getElementById('foo').onkeyup = function(){ 
    if(this.innerHTML.length == 0) alert('string deleted'); 
}; 
+0

Dans Chrome, la longueur n'atteint jamais 0 car l'état 'vide' a un '
' dans (4) ou parfois

0

La seule façon que je peux penser au moment de créer un événement d'interrogation qui vérifie tous les petits peu pour voir si le div contient toujours le même texte. Si vous connaissez le texte que vous recherchez, vous pouvez simplement utiliser un regex (ou une recherche de chaîne de caractères) pour voir si la chaîne est toujours là. Vous pouvez écouter les événements keydown, keypress ou keyup, mais n'oubliez pas d'ajouter un timeout pour vous assurer que leur dernière pression sur une touche a été prise en compte, leur dernière pression pouvant être la touche backspace.