使用javascript自定义可信行为

时间:2011-04-18 18:47:02

标签: javascript jquery javascript-events contenteditable

目前在Firefox下,当我在一个令人满意的段落中按回车时,它插入一个br标签创建一个新的段落标签,然后将一个br标签放在该新段落中。我想修改

这样的行为
  • Shift + enter = br tag(这已经是默认值)
  • 输入重复当前元素p,li,h1..etc并删除任何尾随或前导(W3C规范需要一些我可以使用的事件,但我完全不确定如何实现它们。
  • 元素开头的退格键会将它与前面的兄弟节点合并(如果存在)
  • 元素末尾的删除会将其与以下兄弟元素合并(如果存在)。

我已尝试捕获按键并检查返回,删除和退格键,但我似乎无法准确获取当前插入符号位置或阻止默认行为,如果我覆盖它。

如果那里的任何人知道如何......我会觉得最有帮助。

也许有人甚至知道已经以这种方式行事的用户代理(浏览器)。这是可以接受的。

谢谢,

丹尼尔

1 个答案:

答案 0 :(得分:6)

要编辑内容可编辑的行为,我会这样做:

$("#editable").bind("keypress",function(e){
   if(e.keyCode==13 && e.shiftKey){ //enter && shift
      e.preventDefault(); //Prevent default browser behavior
      this.html(this.html+"<br>");
   }
});

您可以编辑html功能中的内容。 PS:我不记得jQuery是否在事件对象上有shiftKeykeyCode ...如果出现任何问题,请将e更改为e.originalEvent

获得carret职位: 在非IE中:

document.getSelection().anchorOffset