如果两个事件都发生,如何只触发其中一个事件?

时间:2016-08-18 08:42:44

标签: javascript jquery events

我使用此代码来处理事件,但如果两个或其中一个发生,我想要触发一次。

$(document).on("keypress blur", ".pollOptionInput", function(e) {
  if (e.type == 'focusout' || e.keyCode == 13) {
    e.preventDefault();
    addPollOption();
    $('.btnAdd').focus();
  }
});

如果按下回车键,我的代码会激活两次。 我怎样才能解决我的问题?

2 个答案:

答案 0 :(得分:1)

它没有任何问题。也许你附上事件两次,这就是问题所在。 请注意,我改变了一种附加事件的方式 - read more

$(document).ready(function(){
  $(".pollOptionInput").on("keypress blur", function(e) {
    if (e.type == 'blur' || e.keyCode == 13) {
    e.preventDefault();
      //addPollOption();
      //$('.btnAdd').focus();
      console.log('EVENT!');
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<input type="text" class="pollOptionInput" />
<input type="text" class="pollOptionInput" />
<input type="text" class="pollOptionInput" />

答案 1 :(得分:0)

这是你所期望的吗? 您可以通过以下方式传递文档中的函数:

    var myFunction = function() {
    addPollOption();
    $('.btnAdd').focus();
    //if you don't want an event occurs multiple times after one call:
    e.stopPropagation();
    }

    $('document')
    .keypress(myFunction)
    .blur(myFunction)