javascript - Tag-It jquery 插件上出现多个 'createTag' 错误

标签 javascript jquery jquery-plugins tag-it

我正在使用 https://github.com/aehlke/tag-it 中的 tag-it jquery 插件

var ip_elem = $('#my-tags');

ip_elem.tagit({
    removeConfirmation: false,
    caseSensitive: false,
    allowDuplicates: false,
    allowSpaces: true,
    readOnly: false,
    tagLimit: null,
    singleField: false,
    singleFieldDelimiter: ',',
    singleFieldNode: null,
    tabIndex: null,
    placeholderText:"Enter Tags"
});

现在,我想使用 createTag 方法以编程方式添加更多标签。

var newTags = ["javascript","php","ruby","python"];

for(var k=0;k<newTags.length;k++){
    ip_elem.tagit("createTag", newTags[k]);
}

它显示输入中的第一个标签,但对于第二个标签显示:未捕获错误:无法在初始化之前调用 tagit 上的方法;尝试调用方法“createTag”。它停止并且现在不再在输入框中添加任何标签。因此,最终仅形成第一个标签(在本例中为 javascript)

这里出了什么问题?

最佳答案

看一下我在 Fiddle 中创建的示例:

在 Fiddle 示例中,它将动态创建 tags onload,如果您尝试输入具有相同名称的 tag,它会不会让你添加它。

希望这会对您有所帮助,它有一些事件可以向您展示页面上实际发生的情况。

var newTags = ["javascript","php","ruby","python"];

var addEvent = function(text) {
    $('#events_container').append(text + '<br>');
};

$(function(){
    var ip_elem = $('#myTags');

    ip_elem.tagit({
        removeConfirmation: false,
        caseSensitive: false,
        allowDuplicates: false,
        allowSpaces: true,
        readOnly: false,
        tagLimit: null,
        singleField: false,
        singleFieldDelimiter: ',',
        singleFieldNode: null,
        tabIndex: null,
        placeholderText:"Enter Tags"
    });

    ip_elem.tagit({
        availableTags: newTags,
        beforeTagAdded: function(evt, ui) {
            if (!ui.duringInitialization) {
                addEvent('Before Tag Added: ' + ip_elem.tagit('tagLabel', ui.tag));
            }
        },
        afterTagAdded: function(evt, ui) {
            if (!ui.duringInitialization) {
                addEvent('After Tag Added: ' + ip_elem.tagit('tagLabel', ui.tag));
            }
        },
        beforeTagRemoved: function(evt, ui) {
            addEvent('Before Tag Removed: ' + ip_elem.tagit('tagLabel', ui.tag));
        },
        afterTagRemoved: function(evt, ui) {
            addEvent('After Tag Removed: ' + ip_elem.tagit('tagLabel', ui.tag));
        },
        onTagClicked: function(evt, ui) {
            addEvent('On Tag Clicked: ' + ip_elem.tagit('tagLabel', ui.tag));
        },
        onTagExists: function(evt, ui) {
            addEvent('On Tag Exists: ' + ip_elem.tagit('tagLabel', ui.existingTag));
        }
    });   

    for(var k=0;k<newTags.length;k++)
    {
        ip_elem.tagit("createTag", newTags[k]);
    }
});

JSFIDDLE EXAMPLE

关于javascript - Tag-It jquery 插件上出现多个 'createTag' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32841146/

相关文章:

javascript - (jQuery 插件)在多项选择测验中拖放答案

javascript - 隐藏/显示表格排序器的过滤器

javascript - 有什么方法可以使 JQuery 插件可扩展?

javascript - 逗号格式作为输入 Angular

javascript - Angular 和 jQuery : Events not attached to dynamically created HTML elements

jquery - FancyBox,获取点击项目的ATTR

javascript - 单击表格行时如何从单元格中获取值

javascript - 无法设法定位 jQuery 中的元素

javascript - 使用 nsIXMLHttpRequest 发布到服务器时,POST 有效负载是什么样的?

javascript - Vue.js : Failed to mount component: template or render function not defined