簡體   English   中英

將HTML作為純文本插入到textarea中?

[英]Inserting html as plain text into textarea?

我正在嘗試創建一個列表,並將其結構作為純文本添加到textarea中。 可以使用以下方法,但僅添加第一個輸入:

HTML

<div id="mindmap">
  <ul>
    <li><button type="button" class="btn btn-default ul-appending">+ Node</button>      </li>
  </ul>
</div>

<div id="mindMapData">
  <textarea col="10" rows="10"></textarea>
</div>

JS

$('body').on('click', 'button.ul-appending', function() {
    $(this).parent().append(
    $('<ul class="main_ul">').addClass('newul sortable').append(
    $('<li><input placeholder="Link title" class="nome_link form-control" type="text"><input placeholder="Link" class="form-control link_url" type="text"></li>')
    )
    );
});

$('body').on('click', 'button.removeThis', function() {
    $(this).parent().parent().parent().remove();
});

function ul(indent) {
    indent = indent || 4;
  var node = $(this);
    return node.removeAttr('class').children().map(function() {
    var self = $(this);
    var value = self.find('> input').val();
    var sub_ul = self.find('> ul');
    var ul_spaces = new Array(indent+4).join(' ');
    var li_spaces = new Array(indent).join(' ');
    if (sub_ul.length && ul) {
        return li_spaces + '<li>' + value + '\n' + ul_spaces +
          '<ul class="sortable">\n' + ul.call(sub_ul, indent+8) + '\n' + ul_spaces + '<ul>\n' +
          li_spaces + '</li>';
    } else {
        return li_spaces + '<li><a href="'+ $(".link_url").text() + '">' + value + '</a></li>';
    }
  }).get().join('\n');
}

function updateTree() {
   $("#mindMapData textarea").text('<ul class="sortable">\n' + $("#mindMap").clone().find('.main_ul').map(ul).get().join('\n') + '\n</ul>');
 }

$("#mindMap").on("DOMSubtreeModified", updateTree);
$("#mindMap").on('keyup', 'input', updateTree);

輸出必須像

<li><a href="www.exampleA.com">My example A</a></li>
<li><a href="www.exampleB.com">My example B</a></li>
<li><a href="www.exampleC.com">My example C</a></li>
<li><a href="www.exampleD.com">My example D</a></li>

我已經建立了一個JsFiddle ,您可以看到它確實添加了一個輸入,即使您添加了節點,也僅放置了第一個輸入

這就是我的解決方法,基本上我必須為2個輸入字段設置2個不同的var

$('body').on('click', 'button.ul-appending', function() {
    $(this).parent().append(
    $('<ul class="main_ul">').addClass('newul sortable').append(
    $('<li><input placeholder="Link title" class="nome_link form-control" type="text"><input placeholder="Link" class="form-control link_url" type="text"></li>')
    )
    );
});

function ul(indent) {
    indent = indent || 4;
  var node = $(this);
    return node.removeAttr('class').children().map(function() {
    var self = $(this);
    var value = self.find('> .nome_link').val();
    var valueB = self.find('> .link_url').val();
    var sub_ul = self.find('> ul');
    var ul_spaces = new Array(indent+4).join(' ');
    var li_spaces = new Array(indent).join(' ');
    if (sub_ul.length && ul) {
        return li_spaces + '<li>' + value + '\n' + ul_spaces +
          '<ul class="sortable">\n' + ul.call(sub_ul, indent+8) + '\n' + ul_spaces + '<ul>\n' +
          li_spaces + '</li>';
    } else {
        return li_spaces + '<li><a href="'+valueB+'">' + value + '</a></li>';
    }
  }).get().join('\n');
}

function updateTree() {
   $("#mindMapData textarea").text('<ul>\n' + $("#mindMap").clone().find('.main_ul').map(ul).get().join('\n') + '\n</ul>');
}

$("#mindMap").on("DOMSubtreeModified", updateTree);
$("#mindMap").on('keyup', 'input', updateTree);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM