我想为输入数据创建标签。(http://textextjs.com/manual/examples/ajax-with-filter-tags-and-autocomplete.html听到他们使用自动完整文本框创建标签,但我不想自动完成标签
听到我的代码
<!DOCTYPE html>
<html>
<head>
<script src="jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#textBox").keyup(function() {
$("#message").val($(this).val());
});
});
</script>
</head>
<body>
<div>
TextBox 1 : <input type="textbox" id="textBox"></input>
TextBox 2 : <input type="textarea" id="message"></input>
</div>
</body>
</html>
听到它反映textbox1到textbox2的数据。
现在我想要的是:如果用户在textbox1中输入任何数据(单词)后跟空格,那么该单词应该转换为textbox2中的标签
答案 0 :(得分:3)
首先type=textarea
错误。没有这样的input
。您必须使用<textarea>
而不是contentditable
。其次,为什么不使用input
属性?它就像一个文本区域,但可以使用HTML,所有浏览器都支持,你可以在任何块元素上使用它!所以用这个替换你的第二个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 = "";
}
});
然后,在您的代码中,
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;
}
(免责声明)我使用SO标签中的样式,如下所示:
tags
演示:http://jsfiddle.net/hungerpain/Wky2Z/
要将标记添加到数组,请在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("");
然后,当您需要将其保存到DB时,只需加入它们:
a
然后,当您下次从DB检索它们时,可以用keypress
(我们在{{1}}函数中执行的操作)包装它们
答案 1 :(得分:1)
试试这个:
$(document).ready(function () {
$("#textBox").keyup(function (e) {
if (e.keyCode == 32) {
$("#message").val($(this).val());
}
if ($(this).val() == '') {
$("#message").val('');
}
});
});