Fix double-binding to submit event
Fixes #916.
Ben Alpert committed
Jan 17, 2014 at 02:55 UTC
c72e9068418680c447ed029a894e6209d809776e
1 file changed
+5
-2
src/core/ReactEventEmitter.js
+5
-2
@@ -79,6 +79,10 @@ var merge = require('merge');
79
var alreadyListeningTo = {};
80
var isMonitoringScrollValue = false;
81
var reactTopListenersCounter = 0;
82
+
83
+// For events like 'submit' which don't consistently bubble (which we trap at a
84
+// lower node than `document`), binding at `document` would cause duplicate
85
+// events so we don't include them here
86
var topEventMapping = {
87
topBlur: 'blur',
88
topChange: 'change',
@@ -111,7 +115,6 @@ var topEventMapping = {
115
topPaste: 'paste',
116
topScroll: 'scroll',
117
topSelectionChange: 'selectionchange',
114
- topSubmit: 'submit',
118
topTouchCancel: 'touchcancel',
119
topTouchEnd: 'touchend',
120
topTouchMove: 'touchmove',
@@ -280,7 +283,7 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, {
283
// to make sure blur and focus event listeners are only attached once
284
isListening[topLevelTypes.topBlur] = true;
285
isListening[topLevelTypes.topFocus] = true;
283
- } else {
286
+ } else if (topEventMapping[dependency]) {
287
trapBubbledEvent(topLevelType, topEventMapping[dependency], mountAt);
288
}
289