Javascript jQuery-逐个触发多个事件
我正在使用jquery,我需要动态修改查询(删除查询或输入新查询),而无需实际键入与tagsInput插件连接的搜索框 我的问题是我想先触发退格事件,然后进入事件。这是代码Javascript jQuery-逐个触发多个事件,javascript,dom,jquery,Javascript,Dom,Jquery,我正在使用jquery,我需要动态修改查询(删除查询或输入新查询),而无需实际键入与tagsInput插件连接的搜索框 我的问题是我想先触发退格事件,然后进入事件。这是代码 function triggering_events() { $(".tag").each(function() { var e = jQuery.Event("keydown"); e.keyCode = 8; e.which = 8; $("#inp
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
}
但只有退格事件是从上述代码触发的。我如何才能使“进入”事件起作用
谁能指出我犯的错误吗
谢谢 这里有一个问题:
$("#input-search_tag").val("food").trigger(e); //triggering enter event
.val()
返回jquery元素的字符串值,它不是可链接的方法。字符串没有触发器
方法
您可以通过将其拆分为两个调用来解决此问题:
var input = $("#input-search_tag");
input.val("food");
input.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
}
您可以尝试使用方法
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");
}
有什么原因让你在一个循环中创建多个事件,而不是只创建一个并重用它?原因是我是jQuery新手:)我已经尝试过了。仍然没有触发enter事件。我已经更新了代码,请检查it@rnk您对多个事件的修复不正确。我将编辑我的答案以包含正确的修复。@jbabey,你说的是
$(“#input-search_tag”).val(“food”).trigger(e)
将导致错误,但不会,因为这不是问题,因为它被用作setter,而不是getter。(见附件)
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");
}