单击链接时焦点输入中的 Keyup 事件

Keyup event in focused input when clicked link

本文关键字:Keyup 事件 输入 链接 焦点 单击      更新时间:2023-09-26

我有一个按钮,当它点击时,我会显示一些输入字段。输入字段跟踪键控事件本身。

当我使用键盘单击按钮(聚焦它然后按回车键)时,输入字段会收到意外的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事件完成了我们的工作,所以焦点不在你的输入中,为什么它不输入任何输入中的单词。