jQuery捕获输入密钥并防止默认

时间:2013-01-20 10:34:41

标签: jquery tinymce keypress enter preventdefault

参考答案: How to use TinyMCE functions on text without actually selecting that text?

我意识到了

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

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

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

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

修改

这是否无效,因为在iframe中按了enter键?

3 个答案:

答案 0 :(得分:4)

是的,这是可能的。 Tinymce使用自己的事件管理。 有tinymce event名为onKeyDown。使用setup configuration parameter您可以使用此活动:

// 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;
          }
      });
   }
});

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

答案 1 :(得分:0)

请尝试以下代码:

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

    if (event.keyCode == 10 || event.keyCode == 13)  {
        event.preventDefault();
    }
});

答案 2 :(得分:0)

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

// 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;
          }
      });
   }
});