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

Tom*_*mer 12 jquery events

我有一个简单的例子,我有一个input字段,我把一个blurchange事件放在上面:

HTML

<input name="test" value=""/>
Run Code Online (Sandbox Code Playgroud)

JS

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

 alert('change'); 

});

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

 alert('blur'); 
});
Run Code Online (Sandbox Code Playgroud)

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

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

是一个你可以玩的例子.

Akh*_*hil 17

解决了这个问题..

 $('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'); });
});
Run Code Online (Sandbox Code Playgroud)


Pra*_*han 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'); 
});?
Run Code Online (Sandbox Code Playgroud)

  • `blur`事件在失去焦点时被发送到元素.最初,此事件仅适用于表单元素,例如`<input>`.在最近的浏览器中,事件的域已扩展为包括所有元素类型.元素可能会通过键盘命令(例如Tab键)或通过鼠标单击页面上的其他位置而失去焦点. (2认同)