我正在使用jquery tagsInput plugin,我需要动态修改查询(删除查询或输入新查询),而不实际输入与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
}
但是只有退格事件才会从上面的代码中触发。如何让参加活动的工作顺利进行?
有人能指出我做过的错误吗?
谢谢!
答案 0 :(得分:1)
这里有一个问题:
$("#input-search_tag").val("food").trigger(e); //triggering enter event
.val()
返回jquery Element的字符串值,它不是可链接的方法。字符串没有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
}
答案 1 :(得分:1)
您可以尝试使用removeTag
和addTag
方法删除并添加标记:
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");
}