从数组形式的javascript标签中获取价值

时间:2014-06-23 10:45:47

标签: javascript jquery

这里我使用网络教程创建了标签。

JSFIDDLE:http://jsfiddle.net/karimkhan/A5TJh/1/

内部:

  for (var i in tags){
    tagString.push(tags[i].value);

  }

如果我alert(tags[i])它正确提醒。

但是当我在功能结束前使用tags时,它会提醒undefined

我的目的是将所有tags存储在一个数组中,并将此数组的POST推送到PHP文件。但问题是我无法在数组中检索标签值。因为它已经在tags数组中,我想我可以直接访问它。

2 个答案:

答案 0 :(得分:0)

您需要1,2,3等值或tag1,tag2,tag3等标签名称? 使用tagString

之类的参数调用someMethod
instance.tagit({
    tagSource: availableTags,
    tagsChanged: function () {

        //Get the tags            
        var tags = instance.tagit('tags');
        var tagString = [];

        //Pull out only value
        for (var i in tags) {
            tagString.push(tags[i].value);
        }

        someMethod(tagString);

        //Put the tags into the input, joint by a ','
        input.val(tagString.join(','));

        function someMethod(tags) {
            console.log(tags);
            // call POST action
        }
    }
});

答案 1 :(得分:0)

我认为从DOM中检索值更容易,而不是尝试将它们存储在数组中。如果在创建数组时将它们存储在数组中,则必须密切关注更改,例如用户是否删除其中一个标记。

所以我会在用户执行提交操作时检索这些值。这些值存储在一个隐藏的无序列表中,每个都有一个.tagit-choice类,所以只需迭代列表并检索文本值:

<强> DEMO

$('.tagit-choice').each(function () {
  alert($(this).contents(':not(a)').text());
});

当然,您可以使用每种方法创建一个数组,一旦您准备好发布这样的数据:

tagsForPost = [];
$('.tagit-choice').each(function (i) {
     tagObj = {value: i, label: $(this).contents(':not(a)').text()};
     tagsForPost.push(tagObj);
});
console.log(tagsForPost);