diff --git a/README.md b/README.md
index f584db03e..1f184aecd 100644
--- a/README.md
+++ b/README.md
@@ -83,6 +83,7 @@ React.render(c, container);
|combobox | enable combobox mode(can not set multiple at the same time) | bool | false |
|multiple | whether multiple select | bool | false |
|disabled | whether disabled select | bool | false |
+|triggerOnchange | trigger input onChange event after an option is selected(onSelect) | bool | true |
|filterOption | whether filter options by input value. default filter by option's optionFilterProp prop's value | bool | true/Function(inputValue:string, option:Option) |
|optionFilterProp | which prop value of option will be used for filter if filterOption is true | String | 'value' |
|optionLabelProp | which prop value of option will render as content of select | String | 'value' |
diff --git a/src/PropTypes.js b/src/PropTypes.js
index 9317e2c81..55f1344e2 100644
--- a/src/PropTypes.js
+++ b/src/PropTypes.js
@@ -40,6 +40,7 @@ export const SelectPropTypes = {
showSearch: PropTypes.bool,
disabled: PropTypes.bool,
allowClear: PropTypes.bool,
+ triggerOnchange: PropTypes.bool,
showArrow: PropTypes.bool,
tags: PropTypes.bool,
prefixCls: PropTypes.string,
diff --git a/src/Select.jsx b/src/Select.jsx
index ef4045440..6f455899d 100644
--- a/src/Select.jsx
+++ b/src/Select.jsx
@@ -52,6 +52,7 @@ const Select = React.createClass({
defaultActiveFirstOption: true,
showSearch: true,
allowClear: false,
+ triggerOnchange: true,
placeholder: '',
onChange: noop,
onFocus: noop,
@@ -270,8 +271,9 @@ const Select = React.createClass({
this.setOpenState(false, true);
}
this.fireChange(value);
+
let inputValue;
- if (isCombobox(props)) {
+ if (isCombobox(props) && props.triggerOnchange) {
inputValue = getPropValue(item, props.optionLabelProp);
} else {
inputValue = '';
diff --git a/tests/Select.triggerOnchange.spec.js b/tests/Select.triggerOnchange.spec.js
new file mode 100644
index 000000000..76a4c3dfd
--- /dev/null
+++ b/tests/Select.triggerOnchange.spec.js
@@ -0,0 +1,36 @@
+/* eslint-disable no-undef */
+import React from 'react';
+import { mount } from 'enzyme';
+import Select, { Option } from '../src';
+
+describe('test test test', () => {
+ it('fires input change by default ', () => {
+ const wrapper = mount(
+
+ );
+
+ wrapper.find('.rc-select').simulate('click');
+ const dropdownWrapper = mount(wrapper.find('Trigger').node.getComponent());
+
+ dropdownWrapper.find('MenuItem').first().simulate('click');
+ expect(wrapper.state().inputValue).toBe('1');
+ });
+
+ it('not fires input change when triggerOnchange is false ', () => {
+ const wrapper = mount(
+
+ );
+
+ wrapper.find('.rc-select').simulate('click');
+ const dropdownWrapper = mount(wrapper.find('Trigger').node.getComponent());
+
+ dropdownWrapper.find('MenuItem').first().simulate('click');
+ expect(wrapper.state().inputValue).toBe('');
+ });
+});