views:

827

answers:

2

When using contentEditable in Mozilla, is there a way to prevent the user from inserting paragraph or line breaks by pressing enter or shift+enter?

+2  A: 

You can attach an event handler to the keydown or keypress event for the contentEditable field and cancel the event if the keycode identifies itself as enter (or shift+enter).

This will disable enter/shift+enter completely when focus is in the contentEditable field.

If using jQuery, something like:

$("#idContentEditable").keypress(function(e){ return e.which != 13; });

...which will return false and cancel the keypress event on enter.

kamens
Hurrah! Thanks! :)
Daniel Cassidy
A: 
$("#idContentEditable").keypress(function(e){ return e.which != 13; });

Solution proposed by Kamens doesn't work in Opera, you should attach event to document instead.

/**
 * Pass false to enable
 */
var disableEnterKey = function(){
 var disabled = false;

 // Keypress event doesn't get fired when assigned to element in Opera
 $(document).keypress(function(e){
  if (disabled) return e.which != 13;
 });     

 return function(flag){
  disabled = (flag !== undefined) ? flag : true;
 }
}();
valums