Aks*_*rma 6 html javascript css html5
我已经构建了一个将markdown转换为html 的编辑器.现在我必须使用jquery autosize插件来调整文本区域的大小.
如果我使用内容可编辑的div,我可以绕过它.但内容可编辑div的问题在于它不保留新行.每按一次返回键,它就会插入一个新的div.这打破了我的应用程序的markdown渲染到html.
有什么方法可以使内容可编辑div的行为与文本区域完全相同吗?
Ton*_*rix 10
在寻找答案而没有找到任何完全有效的东西后,我编写了自己的jQuery插件.
https://github.com/UziTech/jquery.toTextarea.js
我在输入时使用white-space: pre-wrap;并插入' \n'.这样我可以用$("div").text()得到的文本,不用担心删除标签和格式<br/>的
DEMO:
http://jsfiddle.net/UziTech/4msdgjox/
在上面的 @Mr_Green 评论之后,您应该看看通过在可编辑内容上按 Enter 键来创建 <br> 而不是 <div></div>
正确的 JS 代码是:
$(function(){
$("#editable")
// make sure br is always the lastChild of contenteditable
.live("keyup mouseup", function(){
if (!this.lastChild || this.lastChild.nodeName.toLowerCase() != "br") {
this.appendChild(document.createChild("br"));
}
})
// use br instead of div div
.live("keypress", function(e){
if (e.which == 13) {
if (window.getSelection) {
var selection = window.getSelection(),
range = selection.getRangeAt(0),
br = document.createElement("br");
range.deleteContents();
range.insertNode(br);
range.setStartAfter(br);
range.setEndAfter(br);
range.collapse(false);
selection.removeAllRanges();
selection.addRange(range);
return false;
}
}
});
})
Run Code Online (Sandbox Code Playgroud)
;
您可以拦截Enter按键并将其替换为<br>with Javascript :
$(function(){
$("#editable").keypress(function(e) {
if (e.which == 13) {
e.preventDefault();
if (document.selection) {
document.selection.createRange().pasteHTML("<br/>");
} else {
$(this).append("<br/>");
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6349 次 |
| 最近记录: |