如何使用javascript通过textarea替换元素

时间:2011-12-29 19:04:45

标签: javascript jquery html ajax

我所做的基本上是一个用户个人资料,其中有一个文本框,供用户添加关于他/她自己的描述。虽然我有一个单独的页面,用户可以在其中编辑个人资料,但我想提供一个功能,当用户将鼠标悬停在他的描述框上时,他会看到edit按钮。

如果用户单击该按钮,则他/她可以在其中编辑描述字段,并使用Ajax更新后端。 ajax调用和后端处理很简单,但如何使用htmltextarea按钮替换submit,然后使用javascript再次放回原始html。

这是我的html外观

<div id="personalText" >
    <a href="#" id="editButton"> edit </a>
    <p id="descText">{{profile.desc}}</p>
</div>

当有人点击editButton时,我想将personalText内的html替换为包含textarea中原始文本的descTextupdate按钮。当用户编辑文本并点击更新时,我会更新后端模型并再次添加<a>代码和<p>代码。

任何人都可以提供帮助。我似乎知道如何做它的一部分,但无法弄清楚如何在update点击上替换原始结构。

2 个答案:

答案 0 :(得分:2)

不是创建/销毁DOM元素,而是选择隐藏编辑<textarea/>

<div id="personalText" >
    <div class="display">
        <a href="#" id="editButton">edit</a>
        <p id="descText">{{profile.desc}}</p>
    </div>
    <div class="edit" style="display:none;">
        <input type="submit" value="Update"/>
        <textarea>{{profile.desc}}</textarea>
    </div>
</div>

然后你的jQuery可以简单地切换元素并处理你的ajax帖子。

$("input[type='submit']").on("click", function() {
    $.ajax({
        url:"/your/url/"
    }).success(function(){
        $(".display, .edit").toggle();
        $("#descText").html($("textarea").val());
    });
    return false;
});

<强> Example on jsfiddle

答案 1 :(得分:1)

$('#editButton').click(function(){
  var text = $('descText').text();
  var textArea = $('<textarea></textarea>');
  textArea.value = text;
  $('#personalText').replaceWith(textArea);
});