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

Getting value from javascript tags in array form

本文关键字:标签 获取 javascript 数组      更新时间:2023-09-26

这里我使用web教程创建标签。

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

:

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

如果I alert(tags[i]),它会正确警报。

但是当我在函数结束前使用tags时,它会警告undefined

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

您需要像1,2,3这样的值还是像tag1, tag2, tag3这样的标签名称?调用带有tagString

参数的someemethod
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
        }
    }
});

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

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

$('.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);