从一组字段中失去焦点时触发主干事件

时间:2012-07-31 20:27:32

标签: jquery backbone.js

当有人点击两个input字段之一时,尝试触发主干事件。这可以在外部点击时正确触发,但我希望在您单击OTHER字段时不会触发它。

var ItemView = Backbone.View.extend({

  events: {
    'blur input': 'blurInputs'
  },

  blurInputs: function(){
    if ( $('input.description').is(":focus") || $('input.amount').is(":focus") ){
      // do nothing
    } else {
      // do something
    }
  }

});

2 个答案:

答案 0 :(得分:3)

问题可能是因为在其他输入框获得焦点之前触发了模糊事件。

可能的黑客攻击是等待几毫秒,然后再检查输入框是否有焦点

blurInputs: function() {
  setTimeout(function() {
    if (this.$('input.description').is(':focus') || this.$('input.amount').is(':focus')) {
      // do nothing
    } else {
      // do something
    }
  }, 50);
}

答案 1 :(得分:0)

这是基于Paul的答案,但它对我的用例很有用

  onBlur: function(e) {
    var self = this;
    setTimeout(function() {
      if(self.$el.find('input:focus').length == 0) {
        console.log("BLUR");
      }
    }, 500);
  },