首先type=textarea
是错误的。没有input
那样的。你必须使用<textarea>
而不是那个。其次,为什么不使用contentditable
属性?它就像一个文本区域,但可以接受 HTML,所有浏览器都支持它,你可以在任何块元素上使用它!所以input
用这个替换你的第二个:
TextBox 2 : <div class="target" contenteditable="true"></div>
然后,在您的代码中,
$("#textBox").keypress(function (e) {
if (e.which === 32) {
$(".target").append("<a href='#' class='tag'>" + this.value + "</a>");
this.value = "";
}
});
(免责声明)我使用了 SO 标签中的样式,如下所示:
body {
font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif;
}
.tag {
color: #3E6D8E;
background-color: #E0EAF1;
border-bottom: 1px solid #b3cee1;
border-right: 1px solid #b3cee1;
padding: 3px 4px 3px 4px;
margin: 2px 2px 2px 0;
text-decoration: none;
font-size: 90%;
line-height: 2.4;
white-space: nowrap;
}
.tag:hover {
background-color: #c4dae9;
border-bottom: 1px solid #c4dae9;
border-right: 1px solid #c4dae9;
text-decoration: none;
}
演示:http: //jsfiddle.net/hungerpain/Wky2Z/
要将标签添加到数组中,请在函数tags
外部调用一个变量:keypress
var tags = [];
那么,在 中keypress
,你有这个if
循环吗?将新值推入数组:
if (e.which === 32) {
$(".target").append("<a href='#' class='tag'>" + this.value + "</a>");
tags.push(this.value); //push the value in array
this.value = "";
}
然后,当您需要将其保存到数据库时,只需加入它们:
tags.join("");
然后,当你下次从数据库中检索它们时,你可以用a
(我们在keypress
函数中所做的)包装它们
演示:http: //jsfiddle.net/hungerpain/Wky2Z/1/