【问题标题】:javascript prevent default for keyupjavascript阻止keyup的默认设置
【发布时间】:2013-04-17 05:55:15
【问题描述】:

我有以下代码:

$(document).on('keyup', 'p[contenteditable="true"]', function(e) {
    if(e.which == 13) {
        e.preventDefault();
        $(this).after('<p contenteditable = "true"></p>');
        $(this).next('p').focus();
    } else if((e.which == 8 || e.which == 46) && $(this).text() == "") {
        e.preventDefault();
        alert("Should remove element.");
        $(this).remove();
        $(this).previous('p').focus();
    };
});

我想阻止按下某个键时的默认操作。 preventDefault 适用于 keypress 但不适用于 keyup。有没有办法防止$(document).on('keyup') 的默认值?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    没有。 keyup 在默认操作后触发。

    keydownkeypress 是您可以阻止默认设置的地方。
    如果这些没有停止,则会发生默认情况并触发 keyup

    【讨论】:

    • 有谁知道备份这个的参考?
    • @tutuDajuju 这很清楚 imo,即使没有参考。如果你连接到 keyup 那么你就不能再“拦截”实际的按键了,因为它已经被 keydown 处理了。
    【解决方案2】:

    我们可以使用下面的代码 sn-p 来阻止这个动作。

    e.stopPropagation();
          e.preventDefault();  
          e.returnValue = false;
          e.cancelBubble = true;
          return false;
    

    keyup 在 keydown/keypress 之后触发。我们可以阻止任何这些事件中的默认操作。

    谢谢,

    湿婆

    【讨论】:

    • 这不是所提问题的正确答案,否则我会投赞成票;但是,我非常感谢您为提供这些有用信息所做的努力。
    • 不要使用 keyup ,而是使用 keydown 并添加他的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2016-05-04
    • 2013-07-25
    • 2015-06-20
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多