diff --git a/src/renderers/dom/client/wrappers/ReactDOMInput.js b/src/renderers/dom/client/wrappers/ReactDOMInput.js index db58556027..69ec0ade16 100644 --- a/src/renderers/dom/client/wrappers/ReactDOMInput.js +++ b/src/renderers/dom/client/wrappers/ReactDOMInput.js @@ -13,7 +13,7 @@ var DOMPropertyOperations = require('DOMPropertyOperations'); var LinkedValueUtils = require('LinkedValueUtils'); var ReactDOMComponentTree = require('ReactDOMComponentTree'); var ReactUpdates = require('ReactUpdates'); - +var inputValueTracking = require('inputValueTracking'); var invariant = require('invariant'); var warning = require('warning'); @@ -348,6 +348,11 @@ function _handleChange(event) { 'ReactDOMInput: Mixing React and non-React radio inputs with the ' + 'same `name` is not supported.', ); + + // We need update the tracked value on the named cousin since the value + // was changed but the input saw no event or value set + inputValueTracking.updateValueIfChanged(otherNode); + // If this is a controlled radio button group, forcing the input that // was previously checked to update will cause it to be come re-checked // as appropriate. diff --git a/src/renderers/dom/shared/ReactDOMComponent.js b/src/renderers/dom/shared/ReactDOMComponent.js index 5ba15cc364..64e641f425 100644 --- a/src/renderers/dom/shared/ReactDOMComponent.js +++ b/src/renderers/dom/shared/ReactDOMComponent.js @@ -907,10 +907,6 @@ ReactDOMComponent.Mixin = { // happen after `_updateDOMProperties`. Otherwise HTML5 input validations // raise warnings and prevent the new value from being assigned. ReactDOMInput.updateWrapper(this); - - // We also check that we haven't missed a value update, such as a - // Radio group shifting the checked value to another named radio input. - inputValueTracking.updateValueIfChanged(this); break; case 'textarea': ReactDOMTextarea.updateWrapper(this);