快捷搜索:  xxx  as  1111

html编辑器的回车换行问题解决方案

在html编辑器中,一样平常默认按回车老是呈现

,当然按shift+enter可所以直接加

,而很多人盼望按回车便是

换行而不是分段。

不停有人问我这个问题,而我没有写代码测试就觉得在onkeydown里面判断event.keyCode==13就可以判断并办理,而后来发明彷佛并没有人能用这种措施办理成功。对此表示歉意!为此,仔细钻研了一下,发明可以有两种办理措施,然则都不是很完美,不过已经基础可以满意必要了:

1.在初始化编辑器内容的时刻,加上"

"

这样回车的时刻编辑器会直接天生"

"而不会天生

,就可以只是换行而不换段了,如下所示:

以下为引用的内容:

"+L_DEFAULTHTML_TEXT+"" idEditbox.document.designMode="on"//编辑模式打开 idEditbox.document.write(sz) //以下代码只是帮助方便看编辑器源代码的 idEditbox.document.attachEvent( "onkeyup", readsource ); idEditbox.document.attachEvent( "onkeydown", readsource );}//看源代码function readsource(){ document.all.source.value=idEditbox.document.body.innerHTML;}//-->

不够:

这种措施有个bug便是在编辑器中添加一些内容后,全选(ctr+A)然后删除所有内容(这样就把

也删除了),从新输入内容后回车就照样会孕育发生

2.直接在onkeypress里面处置惩罚

我们可以在onkeypress里面直接出来,但判断event.keyCode==13也便是是回车的时刻我们直接插入

标签,这样无论怎么样都不会呈现问题的了。以下是代码示例:

以下为引用的内容:

" idEditbox.document.designMode="on" idEditbox.document.write(sz) idEditbox.document.onkeypress=fnKeypress}function fnKeypress(){ //留意:假如焦点不在编辑器内该函数就不起感化了; var ev = idEditbox.event; if(ev.keyCode==13){insertHTML("

"); //不知道是我浏览器问题照样其他问题,只插入

标签光标不换行,必须附加点其他标签,可以着末一路删除之return false;//这样回车便是即是掉效了,不会加上憎恶的

标签 }}//在光标位置插入htmlfunction insertHTML(html){var sel = idEditbox.document.selection;if (sel!=null) {var rng = sel.createRange();if (rng!=null)rng.pasteHTML(html);}}//查看代码function readsource(){ document.all.source.value=idEditbox.document.body.innerHTML;}//-->

不够:

1).insertHTML("

"); 会孕育发生垃圾代码“”;

2).要包管焦点必须在编辑器中才能相应编辑器的onkeypress事故

因光阴关系,本示例法度榜样并未给出焦点不在编辑器中的处置惩罚措施

您可能还会对下面的文章感兴趣: