带有replace的jquery输入文本无法正常工作

时间:2017-06-24 04:31:56

标签: javascript jquery html angularjs

我在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&nbsp;&nbsp;</span>
    <a href="#" title="Removing tag">x</a>
  </span>
  <span class="tag">
    <span>tag2&nbsp;&nbsp;</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("&nbsp;", ",")); // tag1 tag2
alert(tags.replace("&nbsp;&nbsp;", ",")); // tag1 tag2

取代

tag1 tag2

4 个答案:

答案 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());

https://jsfiddle.net/j4d0ko17/

答案 3 :(得分:0)

对于角度js,我建议使用角度库而不是jquery。您可以尝试使用http://mbenford.github.io/ngTagsInput/

var tags  = jQuery("#news_tags_tagsinput .tag span").text().trim();
alert((tags.split(/\s+/)).join());

虽然,我不建议使用空格拆分,因为任何标签都包含空格,将被视为多个标签而不是单个。