2013-04-17 6 views
9

Ich habe den folgenden Code:Javascript verhindern Standard für keyup

$(document).on('keyup', 'p[contenteditable="true"]', function(e) { 
    if(e.which == 13) { 
     e.preventDefault(); 
     $(this).after('<p contenteditable = "true"></p>'); 
     $(this).next('p').focus(); 
    } else if((e.which == 8 || e.which == 46) && $(this).text() == "") { 
     e.preventDefault(); 
     alert("Should remove element."); 
     $(this).remove(); 
     $(this).previous('p').focus(); 
    }; 
}); 

Ich mag würde die Standard-Aktion zu verhindern, wenn eine Taste gedrückt wird. preventDefault funktioniert für keypress aber nicht keyup. Gibt es eine Möglichkeit, die defualt für $(document).on('keyup') zu verhindern?

Antwort

27

Nr keyup Brände nach der Standardaktion.

keydown und keypress sind, wo Sie den Standard verhindern können.
Wenn diese nicht gestoppt werden, wird die Standardeinstellung ausgelöst und keyup wird ausgelöst.

1

Wir können die Aktion mit folgendem Code-Snippet verhindern.

e.stopPropagation(); 
     e.preventDefault(); 
     e.returnValue = false; 
     e.cancelBubble = true; 
     return false; 

keyup wird nach Keydown/Tastendruck ausgelöst. Wir können die Standardaktion in jedem dieser Ereignisse verhindern.

Danke,

Siva

+0

Es ist nicht die richtige Antwort auf die gestellte Frage ist, sonst würde ich es upvote; Ich schätze jedoch Ihre Bemühungen, diese nützlichen Informationen bereitzustellen. –

+0

benutze 'keyup' nicht, aber benutze' keydown' und füge seine Antwort hinzu –