Javascript 输入键以创建新段落
我有把小提琴:Javascript 输入键以创建新段落,javascript,jquery,Javascript,Jquery,我有把小提琴: $(document).on(“按键”,“内容”,函数(e){ 如果(如keyCode===13){ e、 预防默认值(); 贴片插入符号(“”); } }); 函数pasteHtmlAtCaret(html){ var-sel,范围; if(window.getSelection){ //IE9和非IE sel=window.getSelection(); if(sel.getRangeAt&&sel.rangeCount){ 范围=选择范围(0); range.deleteC
$(document).on(“按键”,“内容”,函数(e){
如果(如keyCode===13){
e、 预防默认值();
贴片插入符号(“”);
}
});
函数pasteHtmlAtCaret(html){
var-sel,范围;
if(window.getSelection){
//IE9和非IE
sel=window.getSelection();
if(sel.getRangeAt&&sel.rangeCount){
范围=选择范围(0);
range.deleteContents();
//Range.CreateContexturalFragment()在这里会很有用,但是
//非标准且并非所有浏览器都支持(例如IE9)
var el=document.createElement(“div”);
el.innerHTML=html;
var frag=document.createDocumentFragment(),节点,lastNode;
while((node=el.firstChild)){
lastNode=frag.appendChild(节点);
}
range.insertNode(frag);
//保留所选内容
如果(最后一个节点){
range=range.cloneRange();
range.setStartAfter(lastNode);
范围。塌陷(真);
选择removeAllRanges();
选择添加范围(范围);
}
}
}else if(document.selection&&document.selection.type!=“控制”){
//IE<9
document.selection.createRange().pasteHTML(html);
}
}
我不确定我将如何完成这样的任务:当有人按enter键时,它将跳出当前的
标记并启动一个新的
标记,就像在所见即所得编辑器中一样。有什么建议吗?像这样吗?
$('p').on('keypress', function (e) {
if (e.keyCode === 13) {
e.preventDefault();
$(this).after('</p><p>');
}
});
$('p')。在('keypress',函数(e)上{
如果(如keyCode===13){
e、 预防默认值();
$(此).after('');
}
});
编造:你可以用你的新内容生成一个新的
,并将它附加(或预加)到你的容器中
查看
<div class="content"><p class="new-content" contenteditable="true">Click</p></div>
单击
JS
$(document).on("keypress", ".content", function (e) {
if (e.keyCode === 13) {
e.preventDefault();
var content = $("p.new-content").text();
$("<p>" + content + "</p>").insertBefore("p.new-content");
$("p.new-content").text("");
}
});
$(document).on("click", "p", function (e) {
$("p.new-content").removeClass("new-content").attr("contenteditable",false);
$(this).addClass("new-content").attr("contenteditable",true).focus();
});
$(document).on(“按键”,“内容”,函数(e){
如果(如keyCode===13){
e、 预防默认值();
var content=$(“p.new-content”).text();
$(“”+content+“”).insertBefore(“p.new-content”);
$(“p.new-content”)。文本(“”);
}
});
$(文档)。在(“单击”,“p”,函数(e){
$(“p.new-content”).removeClass(“new-content”).attr(“contenteditable”,false);
$(this).addClass(“新内容”).attr(“contenteditable”,true).focus();
});
谢谢,这很有效!现在我需要让它删除默认文本,并在单击divnp时使其成为空的p标记,更新fiddle以删除文本。还添加了2个css属性,这样即使只有p
没有高度或宽度,高亮显示的区域也会保持高亮显示。
$(document).on("keypress", ".content", function (e) {
if (e.keyCode === 13) {
e.preventDefault();
var content = $("p.new-content").text();
$("<p>" + content + "</p>").insertBefore("p.new-content");
$("p.new-content").text("");
}
});
$(document).on("click", "p", function (e) {
$("p.new-content").removeClass("new-content").attr("contenteditable",false);
$(this).addClass("new-content").attr("contenteditable",true).focus();
});