我在angularJS项目中使用jQuery tags input library。在前端,我能够添加标签,但是当我检索该输入的文本时。它在值之间包含空格。我试图在字符串变量上使用replace函数,但它不起作用。
HTML
accountDocument.save(function (err, account) {
if (err){
res.status(500).json(err); // Option 1 - sends DB error to user
res.status(500).end(); // Option 2 - just notifies there was a problem
throw err; // Option 3 - stops the server completely
}
else
res.status(200).json(account);
});
控制器
<input id="news_tags" data-js-tags-input="" type="text" name="example-tags1" value="" ng-model="news.tags"
class="form-control ng-pristine ng-untouched ng-valid ng-empty" data-tagsinput-init="true" style="display: none;">
<div id="news_tags_tagsinput" class="tagsinput" style="width: 100%; min-height: 36px; height: 36px;">
<span class="tag">
<span>tag1 </span>
<a href="#" title="Removing tag">x</a>
</span>
<span class="tag">
<span>tag2 </span>
<a href="#" title="Removing tag">x</a>
</span>
<div id="news_tags_addTag">
<input id="news_tags_tag" value="" data-default="Add tag" style="color: rgb(102, 102, 102); width: 68px;">
</div>
<div class="tags_clear"></div>
</div>
输出
var tags = jQuery("#news_tags_tagsinput .tag span").text().trim();
alert((typeof tags)); // String
alert(tags.replace(" ", ",")); // tag1 tag2
alert(tags.replace(" ", ",")); // tag1 tag2
alert(tags.replace(" ", ",")); // tag1 tag2
alert(tags.replace(" ", ",")); // tag1 tag2
取代
tag1 tag2
答案 0 :(得分:1)
jQuery插件为您处理此问题。您应该只需获取基础输入的值,而不是尝试手动获取标记:
jQuery("#news_tags").val() //comma-delimited list of tags
答案 1 :(得分:1)
更改为模式拆分字符串
var tags = jQuery("#news_tags_tagsinput .tag span").text().trim();
alert(tags.split(/\s+/));
正则表达式意味着
\s = find whitespace character
+ = one or more characters
答案 2 :(得分:1)
var tags = jQuery("#news_tags_tagsinput .tag span").slice();
alert(tags[0].textContent.trim() + "," + tags[1].textContent.trim());
答案 3 :(得分:0)
对于角度js,我建议使用角度库而不是jquery。您可以尝试使用http://mbenford.github.io/ngTagsInput/
var tags = jQuery("#news_tags_tagsinput .tag span").text().trim();
alert((tags.split(/\s+/)).join());
虽然,我不建议使用空格拆分,因为任何标签都包含空格,将被视为多个标签而不是单个。