0

我正在使用 jquery tagsInput 插件,我需要动态修改查询(删除查询或输入新查询),而无需实际输入与 tagsInput 插件连接的搜索框。

我的问题是我想先触发退格事件,然后再输入事件。这是代码。

function triggering_events() {
    $(".tag").each(function() {
        var e = jQuery.Event("keydown");
        e.keyCode = 8;
        e.which = 8;
        $("#input-search_tag").trigger(e); //triggering backspace event
    });
    var input = $("#input-search_tag");
    input.val("food");
    input.trigger(e); //triggering enter event
}

但只有退格事件是从上面的代码触发的。如何使该输入事件起作用?

谁能指出我犯的错误?

谢谢!

4

2 回答 2

1

这里有一个问题:

$("#input-search_tag").val("food").trigger(e); //triggering enter event

.val()返回 jquery 元素的字符串值,它不是可链接的方法。字符串没有trigger方法。

您可以通过将其拆分为两个调用来解决此问题:

var input = $("#input-search_tag");
input.val("food");
input.trigger(e); // triggering enter event

或使用.end()

$("#input-search_tag").val("food").end().trigger(e); //triggering enter event

编辑:将它们放在一起,以及重用一个事件而不是创建多个事件:

function triggering_events() {
    var e = jQuery.Event("keydown");

    e.which = 8;
    $(".tag").each(function() {
        $("#input-search_tag").trigger(e); // triggering backspace event
    });

    e.which = 13;
    $("#input-search_tag").val("food").end().trigger(e); // triggering enter event
}
于 2012-09-21T12:57:00.693 回答
1

您可以尝试使用这些方法removeTagaddTag删除和添加标签:

function triggering_events() {

    var 
        idInput = 'input-search',
        input = $("#" + idInput);

    $("#"+idInput+"_tagsinput .tag").each(function() {
        var tag = $.trim($(this).find('span:eq(0)').text());
        input.removeTag(tag);
    });

    input.addTag("food");
}

于 2012-09-21T13:47:45.413 回答