6

我有以下 HTML 代码:

<li class="option-item new" contenteditable="true">simple element2</li>

在编辑此元素时单击 ENTER 键时,我想退出编辑模式(将 contentEditable 设置为 false)而不是输入换行符。所以我附上了以下事件监听器:

$("#ctx-options").on('keypress', '.option-item.new', catch_enter);

问题是 ENTER 键不会触发该事件,尽管它会为所有其他键触发。我不明白为什么。这里建议了我使用的相同方法,但它对我不起作用。

4

2 回答 2

7

您需要绑定到keydown,因为何时keypress触发,事件已经发生:

$("#ctx-options").on('keydown', '.option-item.new', function(e) {  
    if(e.keyCode == 13)
    {
        e.preventDefault();
    }
});

请参阅jsFiddle 演示

于 2013-08-17T12:59:39.410 回答
3

我今天已经在这里回答了一个类似的问题。您必须使用该keydown事件。keypress仅适用于有限的键子集(返回键似乎对我有用,但箭头键不起作用;据我所知,按键仅适用于字母数字字符)。

于 2013-08-17T13:02:33.190 回答