2

我有一个contentEditableDIV,我需要防止在 Enter 按键上插入换行符,并且只能通过按 Shift + Enter 来允许它

我试过了:

$(".element").on('keydown', function(e) {
    if (e.keyCode == 13 && !e.shiftKey){
        e.preventDefault();
    }
});

但不起作用。它仅适用于 Textarea..

有没有办法做到这一点?

编辑:我已经在jsFiddle上尝试过,它正在工作,但在我正在处理的页面上没有。

它是一个 DOM 生成的 contentEditable DIV:

<div class="wysibb-body" contentEditable="true"></div>

注释alert()我得到它,但在关闭它后,插入换行符。

$(".wysibb-body").on('keydown', function(e) {
    if (e.keyCode == 13 && !e.shiftKey){
        //alert('Enter pressed');
        e.preventDefault();
    }
});
4

2 回答 2

5

我一直在尝试这段代码,它的工作原理:

$(document).ready(function(e){
     $(".wysibb-body").keydown(function(e) {
         if (e.keyCode == 13 && e.shiftKey){
              alert('Enter + shift pressed');

         } else if(e.keyCode == 13){
              e.preventDefault();
         }
    });
});

经过 chrome、firefox、safari、opera、IE 8 测试,完美运行

于 2013-05-23T07:49:37.940 回答
0

找出为什么不起作用。

DIV 是由 jQuery 插件生成的。调查它,我发现已经有一个事件可以插入一个<br>on enter keyPress。

于 2013-05-23T07:52:16.050 回答