2013-08-29 56 views
0

http://jsbin.com/IKik/1/edit动态添加到textarea的

所以我想动态生成/ html标签追加到一个textarea的值。只要值被改变,我就不能再动态地为元素生成html。我仍然可以键入(显然),但生成过程无效。即使我没有错误。

我做了一个示例来显示我遇到的问题。 任何帮助/建议如何解决这个将不胜感激。

HTML

<div id="contain" align="center"> 
    <button id="add1">Add 1</button> 
    <button id="add2">Add 2</button> 
    <button id="add3">Add 3</button> 
    <button id="add4">Add 4</button> 

    <textarea id="textbox">Default text</textarea> 
</div> 

CSS

#textbox { 
    width: 100%; 
    min-height:30em; 
    max-height: 100%; 
    padding: 0px; 
    resize: none;} 

#contain { 
    width: 100%; 
    height: 100%; 
    resize: none;} 

的JavaScript

$('#add1').click(Add1); 
$('#add2').click(Add2); 
$('#add3').click(Add3); 
$('#add4').click(Add4); 

var textbox = $("#textbox"); 

// Dynamic Add 
function Add1() { 
    textbox.val("Add 1");} 

function Add2() { 
    textbox.append("&lt;div class='gendiv'&gt;gendiv&lt;/div&gt;");} 

function Add3() { 
    textbox.html("<a href='http://bing.com/'>Bing</a>");} 

function Add4() { 
    textbox.text("&lt;img src='http://farm5.static.flickr.com/4111/5208943327_ec7203ac0e.jpg'&gt;");} 

回答

2
.append()

.html().text()方法不同形式的元件工作,用于设置/从元件.val()方法得到的值应该用来代替:

function add2() { 
    textbox.val(function(_, oldVal) { 
     return oldVal + "string to be appended"; 
    }); 
} 
+1

谢谢。我想val应该被使用,但不知道如何让这个工作,所以结束了各种尝试各种方式,没有运气。 –

-2

使用

function Add1() { 
    textbox.text("Add 1");} 

代替.VAL( “添加1”)

http://jsfiddle.net/Y4HCr/

+0

这是做什么用户要求,为什么它downvoted? –

+0

否定文本区域内的文本是.val。你的小提琴正是我不想要的东西,它将动态生成的值替换为值,而不是将其添加到值中。 –