我可以防止模糊事件发生吗?

时间:2012-11-22 09:29:03

标签: jquery events

我有一个简单的示例,其中我有一个input字段,并在其上添加了blurchange事件:

HTML

<input name="test" value=""/>

JS

$('input').change(function(e){

 alert('change'); 

});

$('input').blur(function(e){

 alert('blur'); 
});

如果blur事件被触发,是否可以阻止change事件发生?

一种方法是定义一个在触发更改事件时更改的布尔值,但我不喜欢它,有更好的方法吗?

Here是您可以使用的示例。

4 个答案:

答案 0 :(得分:16)

this解决了问题..

 $('input').change(function(e){
  alert('change'); 
   e.stopImmediatePropagation();
   $(this).off("blur");
 });

$('input').focus(function(e){
   $(this).on("blur", function(e){
   e.stopImmediatePropagation();
   e.preventDefault();
  alert('blur'); });
});

答案 1 :(得分:5)

使用.off

DEMO

$('input').change(function(e){
  alert('change'); 
  e.stopImmediatePropagation();
  $(this).off("blur"); //$("input[name='test']").off("blur");
});

$('input').blur(function(e){  
  e.preventDefault();
 alert('blur'); 
});​

答案 2 :(得分:1)

你可以使用

onchange调用

this.unbind('blur');

答案 3 :(得分:0)

如果我理解正确,答案是使用event.preventDefault(); 有关演示,请参阅http://jsbin.com/welcome/52201/edit