The library for web and native user interfaces.
Fix ChangeEventPlugin for IE8 and IE9
This fixes a bug with `ChangeEventPlugin` in IE8 and IE9. The extend of this bug includes: - On IE8, not firing `onChange` immediately after `value` of an input is changed. - On IE9, not firing `onChange` when backspacing.
Tim Yung committed
Jul 3, 2013 at 11:33 UTC
c692d9e84421447b65fd23d31ac16b81fa055005
1 file changed
+14
-4
src/eventPlugins/ChangeEventPlugin.js
+14
-4
@@ -242,7 +242,7 @@ function getTargetIDForInputEvent(
242
}
243
}
244
245
-// For IE8 and IE9
245
+// For IE8 and IE9.
246
function handleEventsForInputEventIE(
247
topLevelType,
248
topLevelTarget,
@@ -265,8 +265,15 @@ function handleEventsForInputEventIE(
265
startWatchingForValueChange(topLevelTarget, topLevelTargetID);
266
} else if (topLevelType === topLevelTypes.topBlur) {
267
stopWatchingForValueChange();
268
- } else if (
269
- topLevelType === topLevelTypes.topSelectionChange ||
268
+ }
269
+}
270
+
271
+// For IE8 and IE9.
272
+function getTargetIDForInputEventIE(
273
+ topLevelType,
274
+ topLevelTarget,
275
+ topLevelTargetID) {
276
+ if (topLevelType === topLevelTypes.topSelectionChange ||
277
topLevelType === topLevelTypes.topKeyUp ||
278
topLevelType === topLevelTypes.topKeyDown) {
279
// On the selectionchange event, the target is just document which isn't
@@ -348,6 +355,7 @@ var ChangeEventPlugin = {
355
if (isInputEventSupported) {
356
getTargetIDFunc = getTargetIDForInputEvent;
357
} else {
358
+ getTargetIDFunc = getTargetIDForInputEventIE;
359
handleEventFunc = handleEventsForInputEventIE;
360
}
361
} else if (shouldUseClickEvent(topLevelTarget)) {
@@ -369,7 +377,9 @@ var ChangeEventPlugin = {
377
EventPropagators.accumulateTwoPhaseDispatches(event);
378
return event;
379
}
372
- } else if (handleEventFunc) {
380
+ }
381
+
382
+ if (handleEventFunc) {
383
handleEventFunc(
384
topLevelType,
385
topLevelTarget,