<br>
当您在内容可编辑的 div 中按 Enter键时,我有插入的工作代码。(浏览器有各种默认的插入<div>
或<p>
代替)
问题在于,在构建有序或无序列表时,它会破坏按回车键添加另一个列表项的默认行为。所以我的问题是,你能检测到文本插入点是否在列表项中,如果是,禁用处理回车键的 javascript?
工作代码:http: //jsfiddle.net/kthornbloom/RCdhS/
<br>
当您在内容可编辑的 div 中按 Enter键时,我有插入的工作代码。(浏览器有各种默认的插入<div>
或<p>
代替)
问题在于,在构建有序或无序列表时,它会破坏按回车键添加另一个列表项的默认行为。所以我的问题是,你能检测到文本插入点是否在列表项中,如果是,禁用处理回车键的 javascript?
工作代码:http: //jsfiddle.net/kthornbloom/RCdhS/
您需要对包含选择的节点进行一些 DOM 树检查。这是一个适用于所有主流浏览器的演示:
代码:
function isSelectionInsideElement(tagName) {
var sel, containerNode;
tagName = tagName.toUpperCase();
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount > 0) {
containerNode = sel.getRangeAt(0).commonAncestorContainer;
}
} else if ( (sel = document.selection) && sel.type != "Control" ) {
containerNode = sel.createRange().parentElement();
}
while (containerNode) {
if (containerNode.nodeType == 1 && containerNode.tagName == tagName) {
return true;
}
containerNode = containerNode.parentNode;
}
return false;
}
.on('keypress', 'document', function (e) {
if (!$('li').focus();) {
...
}
}
});