我可以取消模糊事件中的点击吗?

时间:2016-04-19 13:31:09

标签: javascript javascript-events

***更新的JSFIDDLE(这是我正在处理的内容的更准确的表示 - 如果开放的无效,则第二个框不应该打开)

NEW JS FIDDLE

我已经搜索并搜索了这个答案,即使是那些相反的答案(比如为什么我的点击发生在模糊之后)也没有回答我的问题。希望有人可以澄清。

我使用的是专有API。在我感兴趣的这个元素上注册了一个点击事件。我需要在点击之前做一些工作,根据这项工作的结果,我可能甚至不希望这个点击发生。显然我无法改变API的内部工作,因此我不得不做其他事情。

我尝试添加另一次点击,但在第二次点击之前(在api中)它不会先调用它,因为从我读到的内容,它们按照注册顺序调用,API首先注册它们。

我尝试了一个模糊,它在点击事件之前被调用,但是preventDefault(),stopPropagtion()和stopImmediatePropagation(),并且返回false没有做任何事情来阻止该点击事件。

我的方法几乎就是验证,如果它的优点,api的点击事件应该发生......但如果不是,那么我需要"不是"单击。

除了使用unquind with jquery(我还没有通过测试,因为我宁愿使用原生javascript),我不确定如何做到这一点。

这里是JSFIDDLE

var d = document.getElementsByClassName('testDiv');

for (var i = 0; i < d.length; i++) {
   d[i].addEventListener('click', function(e) { 
        //alert('hi');
      e.target.style.backgroundColor = 'blue';  //this shouldn't happen if not valid
  });
   d[i].addEventListener('blur', function(e) { 
      //alert('I\'m blurred now');
      var valid = false
      if (!valid) {
        //e.stopImmediatePropagation(); //didn't work
        console.log('not valid');
        //return false;  //didn't work

    /***  if its not valid we want to cancel the click event ***/
  }
  else {
        e.target.style.backgroundColor = '#c486d0';
    e.target.innerHTML = 'Blurred';
  }
   });
}

0 个答案:

没有答案