检测光标是否在可编辑内容的 li 范围内
Detect if cursor is within li on content editable
我有工作代码,当您在内容可编辑的div中按回车键时插入<br>
(浏览器有插入<div>
或<p>
的各种默认值)
问题是它会杀死在构建有序或无序列表时按 Enter 添加另一个列表项的默认行为。所以我的问题是,您能否检测到文本插入点是否在列表项中,如果是,请禁用处理 enter 键的 javascript?
工作代码:http://jsfiddle.net/kthornbloom/RCdhS/
您需要在包含选择的节点上进行一些 DOM 树检查。这是一个适用于所有主流浏览器的演示:
http://jsfiddle.net/CeMxs/2/
法典:
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;
}
http://jsfiddle.net/RCdhS/2/
.on('keypress', 'document', function (e) {
if (!$('li').focus();) {
...
}
}
});
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 在十进制范围内搜索
- 基于日期范围的一组日期范围内的天数
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 将数组传递给函数或确保它在范围内
- socket.io 客户端是否必须存在于全局范围内
- 查找某个日期范围内的可用天数
- 网站范围内jQuery/javascript选择器的最佳实践
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- JS日期对象在某个范围内的百分比
- 检测光标是否在可编辑内容的 li 范围内