1

当有人在两个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
    }
  }

});
4

2 回答 2

3

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

一个可能的技巧是在检查输入框是否有焦点之前等待几毫秒

blurInputs: function() {
  setTimeout(function() {
    if (this.$('input.description').is(':focus') || this.$('input.amount').is(':focus')) {
      // do nothing
    } else {
      // do something
    }
  }, 50);
}
于 2012-07-31T21:17:36.160 回答
0

这是基于保罗的回答,但它适用于我的用例

  onBlur: function(e) {
    var self = this;
    setTimeout(function() {
      if(self.$el.find('input:focus').length == 0) {
        console.log("BLUR");
      }
    }, 500);
  },
于 2015-06-14T18:53:11.147 回答