单击链接时焦点输入中的 Keyup 事件
Keyup event in focused input when clicked link
我有一个按钮,当它点击时,我会显示一些输入字段。输入字段跟踪键控事件本身。
当我使用键盘单击按钮(聚焦它然后按回车键)时,输入字段会收到意外的keyup
事件。
演示:http://jsfiddle.net/LpXGM/3/(只需按回车键并查看页面上的消息)
但是,如果我添加超时,一切都按预期工作。演示:http://jsfiddle.net/8BRmK/1/(按回车键时没有keyup
事件)
为什么会发生这种奇怪的事情?我该如何解决它?
带有处理程序的代码:
$button.on("click", function(){
showModal();
});
$emailField.on("keyup", function(event) {
// process the event
});
var showModal = function() {
$modal.show();
$emailField.focus();
}
没有超时的可能解决方案:http://jsfiddle.net/agudulin/3axBA/
$button.on("keypress", function(event){
if (event.keyCode == 13) {
return false;
}
});
$button.on("keyup", function(event){
if (event.keyCode == 13) {
showModal();
$status.append($("<span>enter has been pressed</span></br>"));
}
});
尝试$button.on("keyup mouseup", function(){
或$emailField.on("keypress", function(event) {
试试
$(document).ready(function(){
$(document).on("click",".btn",function(e){
$status.append($("<span>btn click</span></br>"));
});
$(document).on("keyup",".email",function(e){
$status.append($("<span>keyup " + event.keyCode + "</span></br>"));
});
});
是的,它的发生是因为您单击键盘而不是按钮单击事件首先触发,然后根据您的逻辑,您的输入字段将获得焦点,而您的 keyup 事件是触发的。 但是当你给出超时时,所以点击事件首先被触发,但由于超时,你的逻辑被延迟,而不是你的keyup事件完成了我们的工作,所以焦点不在你的输入中,为什么它不输入任何输入中的单词。
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 访问代码生成的输入元素上的keyup事件
- jQuery调用keyup事件不起作用
- jQuery keyup事件增加-“;函数“;将设置为0
- Keyup事件在easyui上不起作用
- 将变量传递到keyup事件内部
- JS在input标签上使用keyup事件进行搜索
- Keyup 事件侦听器在 Chrome 的 Ominbox 上按下 Enter 时触发
- 如何将 fn 去抖动实现到 jQuery keyup 事件中
- 如何在 keyup 事件上匹配数组中的字符串
- 为什么在Mac浏览器上按下metaKey时,Javascript会丢弃keyUp事件
- jQuery,keyup事件未启动
- 在keyup事件中指定click事件处理程序会导致click事件被多次激发
- 如何在发送keyup事件时避免出现比赛情况
- 通过jQueryAJAX和keyup事件搜索特定的术语
- 在文本区域中的Keyup事件上触发Twitter Bootstrap Popover
- 如何从jQuery插件中附加keyup事件
- jQuery Keyup 事件仅在页面加载时调用
- 黑莓网站:onHardwareKey keyUp 事件
- 如何在 EaselJS 中实现 Keyup 事件