Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入键以创建新段落_Javascript_Jquery - Fatal编程技术网

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();
});