修改删除/退格键的功能
Change the function of the Delete/Backspace Key
我有一个函数,当按下删除键时,将选中的文本包装在一个span中。span的类是红色的,带有一条直通线,表示它已被"删除"。"
CSS: .deleted {
text-decoration:line-through;
color:red;
}
JavaScript: $(document).keydown(function(e) {
(e) ? keycode = e.keyCode : keycode = event.keyCode;
if (keycode == 8 || 46) {
var span = document.createElement("span");
span.className = "deleted";
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(span);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
});
这是一个contenteditable
文本,所以当我按下delete键时,它自然会删除选中的文本,但仍然会创建<span>
元素。是否有办法禁用删除键的传统功能,使文本保留,但仍然与<span>
包装?
e.preventDefault()
应该可以工作。
另外,你应该使用<del>
HTML元素,而不是<span>
附加一个类。
测试这个测试用例:https://jsfiddle.net/jdshq796/
您需要停止事件的默认动作。
你需要在你的代码中添加e.p preventdefault()来确保事件的默认动作不会被触发。
$(document).keydown(function(e) {
e.preventDefault();
(e) ? keycode = e.keyCode : keycode = event.keyCode;
if (keycode == 8 || 46) {
var span = document.createElement("span");
span.className = "deleted";
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(span);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
});
相关文章:
- 删除CKEditor工具栏按钮,但不删除功能
- 主体单击删除功能上的输入框宽度
- 突然停止功能,删除队列
- 删除Highmaps的放大/缩小功能
- 在以下情况下,如何使用AJAX实现删除功能
- 删除滚动条,但保留滚动功能
- 在D3中设置缩放功能后,如何删除缩放功能
- 当我的响应菜单打开时,我如何删除用户转到侧面的功能
- 如何在更改屏幕大小时删除功能(菜单响应)
- 在我的项目中,添加、删除和编辑功能不起作用
- 删除功能不工作angularjs
- 是的,没有带有链接的JavaScript删除功能的选项
- 单击时从内存中删除功能
- 索引数据库:删除功能不起作用
- 我的Ruby在轨道上删除功能不起作用
- 二叉搜索树“删除”功能的优化
- 使用javascript功能删除图像
- 单击功能删除随机ID
- highcharts系列删除功能删除所有原始系列数据(即使存储在新变量中)
- 下拉菜单列表点击功能删除活动文本并添加所选文本