以编程方式触发javascript/jquery事件
Trigger javascript/jquery event programmatically
我正在研究一个网站的一些源代码,想知道如何以编程方式触发这个文本框上的ajax自动完成。我尽量只包括相关的代码。
html:<div class="input-text xxl-width completer">
<input type="text" placeholder="" id="textBoxText" name="textBoxText" class="predictiveText" autocomplete="off">
<div class="autocompleter-wrapper" style="display: none;">
</div>
</div>
javascript: var w = this.$scope,
u = i.keyCodes,
v = this,
t = {
$predictiveLookup: w,
$predictiveInput: w.find("input.predictiveText"),
},
t.$predictiveInput.keydown(i.keyExecutor.onAllKeysExcept(function() {
v.isKeyDown = true
}, [u.enter, u.keyUp, u.keyDown, u.escape]));
t.$predictiveInput.keyup(i.keyExecutor.onAllKeysExcept(function() {
v.checkCompletion(n);
v.isKeyDown = false
}, [u.enter, u.keyUp, u.keyDown, u.escape]));
当我调用$(elem).keyup();
或$(elem).keydown();
时,什么都没有发生。是否有办法以编程方式触发这些事件?
使用trigger
:
$(elem).trigger('click');
为给定的事件类型执行附加到匹配元素的所有处理程序和行为。
文档:http://api.jquery.com/trigger/
可能是$(elem).keyup()
确实正确地触发了您的事件,但它随后在keyExecutor.onAllKeysExcept
内部的某个地方发生了一些逻辑,这是比较按下的键与提供的黑名单,当实际上没有键被按下时,这意味着event.which
是未定义的。
你可以模拟一个特定的键被按下,也许是一个你不希望影响输入,使用以下命令:
var e = $.Event('keyup');
e.which = 40; // (code for down arrow key say)
$(elem).trigger(e);
keyup和keydown是元素的原始事件处理程序。在某些浏览器中,在对它们使用$()后不能直接调用它们。你可以使用.trigger('eventtype')
或者您可以访问原始元素并调用原始元素处理程序,例如:
$(elem)[0].keyup()
$(elem)[0].keydown()
或确保其独立于浏览器,但仍与原始元素一起运行:
$(elem).toArray()[0].keyup()
$(elem).toArray()[0].keydown()
相关文章:
- 在创建对象后附加一个jquery事件
- 将jQuery事件应用于所有类元素
- Jquery事件处理程序仅适用于匿名函数
- 如何在jQuery事件处理程序中存储和重用超时
- 无线电输入更改的jQuery事件未启动
- 我应该/如何清除mousemove JQuery事件侦听器
- 是否可以在jQuery事件中更改Angular范围
- jQuery事件侦听器多次启动
- jQuery 事件处理程序堆叠
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器
- 一个接一个地触发jQuery事件
- 在JQuery事件中查找父元素
- 堆叠jQuery事件(动画)
- 在jquery事件中引用javascript对象
- 动态添加对象的jQuery事件处理程序
- jQuery事件命名空间是否可以包含破折号
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 没有为Ajax添加的新元素注册Jquery事件
- 动态创建的DOM元素上的jQuery事件绑定
- jQuery事件未在动态生成的内容上激发