Jquery 如何在动态创建的元素上触发按键事件
我有一个firstName和一个lastName输入,我将其隐藏并替换为一个fullName输入框。然后,我在动态创建的输入上使用JqueryUI自动完成,效果很好。当我尝试为此编写单元测试并动态添加一些输入并触发“keydown”事件时,带有自动完成结果的框不会出现(我想断言我在测试中获得了所需的结果)。 如果我在输入中手动输入“s”,结果会显示得很好。 我有一个问题可以说明我的问题 HTML:Jquery 如何在动态创建的元素上触发按键事件,jquery,jquery-ui-autocomplete,Jquery,Jquery Ui Autocomplete,我有一个firstName和一个lastName输入,我将其隐藏并替换为一个fullName输入框。然后,我在动态创建的输入上使用JqueryUI自动完成,效果很好。当我尝试为此编写单元测试并动态添加一些输入并触发“keydown”事件时,带有自动完成结果的框不会出现(我想断言我在测试中获得了所需的结果)。 如果我在输入中手动输入“s”,结果会显示得很好。 我有一个问题可以说明我的问题 HTML: JQuery: // add the single input $('#firstName')
JQuery:
// add the single input
$('#firstName').before('<input id="fullName">');
// remove the original first and last name fields
$('#firstName, #lastName').hide();
// call autocomplete on the dynamically created input
$("#fullName").autocomplete({
source: ["ActionScript", "AppleScript", "ASP", "Basic", "ColdFusion", "Haskell", "JavsScript", "Lisp", "Scala", "Scheme"]
});
// ** start unit test **
// auto populate the dynamic input
$('#fullName').val('sc');
// force a keypress to show the autocomplete options
$('#fullName').trigger('keypress');
//添加单个输入
$('#firstName')。在('')之前;
//删除原始的名字和姓氏字段
$('#firstName,#lastName').hide();
//对动态创建的输入调用autocomplete
$(“#全名”).autocomplete({
来源:[“ActionScript”、“AppleScript”、“ASP”、“Basic”、“ColdFusion”、“Haskell”、“Javscript”、“Lisp”、“Scala”、“Scheme”]
});
//**启动单元测试**
//自动填充动态输入
$('全名').val('sc');
//强制按键以显示自动完成选项
$(“#全名”).trigger('keypress');
更换
$('#fullName').trigger('keypress');
与
更新
OP不希望使用小部件的API,常见事件如keydown
和keypress
取决于事件。调用触发器时不存在的keyCode
有趣的是,input
事件不会抑制按键。因此,这可能是OP的单元测试的理想选择
$('#fullName').trigger('input')
这很好,但是有没有其他方法不调用autocomplete就可以实现这一点,这样我就可以在单元测试中使用它呢?您可以尝试.trigger('input')
$('#fullName').autocomplete('search');
$('#fullName').trigger('input')