$('#b').on('click', function() {
  $('#in2').focus();
  //setTimeout(function(){ $('#in2').focus(); },500);
});
$('#in2').on('keyup', function(event) {
  console.log(event.which);
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="b">focus</button>
<input type="text" id="in1" />
<input type="text" id="in2" />





我在按钮上绑定了一个向上键功能,在上面的示例中,我将焦点移到了文本字段#in2上。

而且我还有一个绑定到文本字段#in2的按键事件。

问题:当我使用按钮上的Enter键时,绑定到文本字段(#in2)的事件被调用。

除了setTimeout之外,有人可以建议我一些解决方案吗?

最佳答案

如果我正确理解了您的问题,并且您不希望在按Enter键时调用#in2的键盘上的函数,则只需检查是否按了Enter键,否则就只执行它?

$('#in2').on('keyup', function(event) {
  if(event.which != 13){
    console.log(event.which);
  }
});


或者,您可以使用onchange,以便在元素的内容更改时调用该函数(例如,这也适用于复制和粘贴)

10-08 00:56