4

在这里参考答案: 如何在文本上使用 TinyMCE 函数而不实际选择该文本?

我已经意识到

$('#TAID_ifr').contents().find('html').bind('keypress', function(e){return false;});

不适用于回车键。当用户点击“回车”时,就会形成一个换行符。但是对于所有其他键,代码按预期工作,即没有任何反应。进入需要特殊处理吗?我添加了下面的代码,但没有任何区别:

            var code = e.keyCode || e.which;
                if (code == 13) e.preventDefault();

怎么了?我不想在用户点击“输入”时插入新行,我不想发生任何事情。

编辑

这是否不起作用,因为在enteriframe 内按下了键?

4

3 回答 3

4

是的,这是可能的。Tinymce 使用自己的事件管理。有一个名为tinymce 的事件onKeyDown。使用setup 配置参数,您可以使用此事件:

// Adds an observer to the onKeyDown event using tinyMCE.init
tinyMCE.init({
   ...
   setup : function(ed) {
      ed.onKeyDown.add(function(ed, event) {

          if (event.keyCode == 13)  {
              event.preventDefault();
              event.stopPropagation();
              return false;
          }
      });
   }
});

请注意,由于不同浏览器中的实现不同,此处使用了几个语句来停止代码的传播。

于 2013-01-21T12:06:32.477 回答
0

请尝试以下代码:

$('#TAID_ifr').keypress(function(event){

    if (event.keyCode == 10 || event.keyCode == 13)  {
        event.preventDefault();
    }
});
于 2013-01-20T11:20:43.873 回答
0

在 TinyMce 4.x 中,使用以下代码段,如此所述:

// Adds an observer to the onKeyDown event using tinyMCE.init
tinymce.init({
   ...
   setup : function(ed) {
      ed.on('KeyDown', function(event) {
          if (event.keyCode == 13)  {
              event.preventDefault();
              event.stopPropagation();
              return false;
          }
      });
   }
});
于 2017-05-23T15:15:03.137 回答