【问题标题】:Prevent Line Break on contentEditable DIV防止 contentEditable DIV 上的换行符
【发布时间】:2013-05-23 07:10:31
【问题描述】:

我有一个contentEditable DIV,我需要防止在 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();
    }
});

【问题讨论】:

  • 你的东西在 chrome 中工作。你在检查哪个浏览器?
  • Chrome 上次更新。我知道它有效,我在 jsFiddle 上试过,但在我正在处理的页面上没有。

标签: jquery contenteditable line-breaks


【解决方案1】:

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

$(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 测试,完美运行

【讨论】:

    【解决方案2】:

    找出为什么不起作用。

    DIV 是由 jQuery 插件生成的。调查了一下,我发现已经有一个事件可以在 enter keyPress 上插入一个&lt;br&gt;。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2013-09-04
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多