首页 文章

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

提问于
浏览
4

参考这里的答案: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

    是的,这是可能的 . Tinymce使用自己的事件管理 . 有一个名为 onKeyDowntinymce event . 使用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;
              }
          });
       }
    });
    

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

  • 4

    请尝试以下代码:

    $('#TAID_ifr').keypress(function(event){
    
        if (event.keyCode == 10 || event.keyCode == 13)  {
            event.preventDefault();
        }
    });
    
  • 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;
              }
          });
       }
    });
    

相关问题