繁体   English   中英

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

[英]Keyup event in focused input when clicked link

我有一个按钮,单击后会显示一些输入字段。 输入字段将跟踪键入事件本身。

当我使用键盘单击按钮(将其聚焦然后按回车键)时,输入字段会收到意外的键入事件。

演示: http : //jsfiddle.net/LpXGM/3/ (只需按回车键,然后查看页面上的消息)

但是,如果我添加超时,一切都会按预期进行。 演示: http : //jsfiddle.net/8BRmK/1/ (点击返回按钮时没有键入事件)

为什么会发生这种奇怪的事情? 我该如何解决?

带处理程序的代码

$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>"));
    });
  });

是的,它的发生是因为您单击键盘而不是按钮单击事件首先触发,并且根据您的逻辑,您的输入字段将成为焦点,而您的键盘输入事件才被触发。 但是当您指定超时时,首先触发click事件,但是由于超时,您的逻辑延迟了,而不是您的keyup事件完成了我们的工作,所以重点不在您的输入中,为什么它不在输入中输入任何单词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM