diff --git a/components/form/ValueMixin.jsx b/components/form/ValueMixin.jsx new file mode 100644 index 0000000000..bb815acf5d --- /dev/null +++ b/components/form/ValueMixin.jsx @@ -0,0 +1,32 @@ +function merge() { + const ret = {}; + const args = [].slice.call(arguments, 0); + args.forEach((a)=> { + Object.keys(a).forEach((k)=> { + ret[k] = a[k]; + }); + }); + return ret; +} + +const ValueMixin = { + setValue(field, e) { + let v = e; + const target = e && e.target; + if (target) { + if ((target.nodeName + '').toLowerCase() === 'input' && + target.type === 'checkbox') { + v = target.checked; + } else { + v = e.target.value; + } + } + const newFormData = {}; + newFormData[field] = v; + this.setState({ + formData: merge(this.state.formData, newFormData), + }); + }, +}; + +export default ValueMixin;