【问题标题】:add and remove multiple tag by onclick to textarea通过 onclick 到 textarea 添加和删除多个标签
【发布时间】:2012-08-23 08:31:56
【问题描述】:

我有一个带有 textarea 和数据库标签列表的表单(已在 textarea 下查询并显示),我想在 textarea 上添加这些标签(用逗号分隔),如果标签已经存在,则在用户点击时删除他们。

【问题讨论】:

  • 你有没有尝试过?请发布您的 js 代码以及您的 html
  • 请贴一些代码。这样我们就可以知道你尝试了什么......

标签: javascript jquery html


【解决方案1】:

我想我明白你的意思了,请看看这个小提琴 http://jsfiddle.net/joevallender/QyqYW/1/

代码如下。 tags 来自服务器,selectedTags 是当前选择的托管数组。如有必要,您也可以将数据从服务器加载到selectedTags,例如编辑现有的标记帖子。如果你这样做了,你会将click() 函数中的代码重构为它自己的函数,这样它也可以在准备好的文档上运行。

我已经包含了一些类切换和一个调试屏幕,这样你就可以看到发生了什么。

HTML

<textarea id="tags"></textarea>
<div id="tagButtons"></div>
<div id="debug"></div>

和 JavaScript

var tags = [
  'JavaScript',    
  'jQuery',
  'HTML5',    
  'CSS3'
];

var selectedTags = [];

for(var i = 0; i < tags.length; i++) {
  var el = $('<span>').text(tags[i]);
  $('#tagButtons').append(el);
}

$('#tagButtons span').click(function(){
  var val = $(this).text();
  var index = selectedTags.indexOf(val);
  if(index > -1) {
    var removed = selectedTags.splice(index,1); 
    $(this).removeClass('selected');
    $('#debug').prepend($('<div>').html('Removed: ' + removed));
  } else {
    selectedTags.push(val);
    $(this).addClass('selected');
    $('#debug').prepend($('<div>').html('Added: ' + val));
  }
  $('#tags').val(selectedTags.join(', '));
});

编辑这是一个双向工作http://jsfiddle.net/joevallender/QyqYW/14/

【讨论】:

  • 非常感谢@joevallender,当我尝试从数据库$result = mysql_query("select tagname from tags"); $response = array(); while($row = mysql_fetch_assoc($result)) { $response[] = $row; } $jsonData = json_encode($response); &lt;script&gt; var tags= &lt;?= $jsonData ?&gt;;&lt;/script&gt; 加载标签时出现错误 SyntaxError: invalid XML markup [Break On This Error] var tags= = $jsonData ?>;
  • 干杯伙伴。您发布的代码是为了与他人分享还是您对此也有疑问?我原以为你会想写 json_encode($response) 而不是 $jsonData - 啊,看到你在我打字的时候编辑了你的评论:-)
  • 您已将问题标记为 PHP... 所以不是
  • 感谢您的提议,但只需将您的问题放在 stackoverflow 上,我相信社区可以解决所有问题! :)
  • 太慷慨了@joevallender。
猜你喜欢
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
相关资源
最近更新 更多