1

誰かが 2 つの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

この問題は、他の入力ボックスがフォーカスを取得する前に、blur イベントが発生したことが原因である可能性があります。

考えられるハックは、入力ボックスにフォーカスがあるかどうかを確認する前に数ミリ秒待つことです

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 に答える