在keypress转义时jQuery取消事件

Yan*_*ick 1 jquery

从我的小提琴中的示例中,您将看到我尝试一旦用户单击按钮转义它将显示div状态为取消.

我做的是:

  1. 在输入框中输入一些值
  2. 只需单击选项卡即可运行模糊事件(状态更改为已保存)
  3. 更改值,然后单击转义(输入删除但状态返回保存而不取消)

我知道它在转义事件的if语句下运行代码,但之后它仍然转到blur事件并将状态更改为已保存.

看我的小提琴

HTML:

<input id="input"/>
<div id="status">status</div>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$(document).ready(function() {
  $('#input').live('blur', function(e){
    $('#status').html("saved");
    $('#input').live('keyup', function(e){
      if (e.keyCode == 27) { 
        $('#status').html("cancel");
        $('#input').remove();
      }    
    });  
  });                                        
});
Run Code Online (Sandbox Code Playgroud)

She*_*hef 10

如果您执行以下操作则不会!

$('#input')
    .on('blur', function(e){
        $('#status').html("saved");  
    })
    .on('keyup', function(e){
        if (e.which == 27) { 
            $('#status').html("cancel");
            $('#input')
                .off('blur') // unbind the blur event
                .remove();
        }    
    });     
Run Code Online (Sandbox Code Playgroud)

这是一个分叉的演示