diff --git a/README.md b/README.md
index f595ef49..fcb26cc9 100644
--- a/README.md
+++ b/README.md
@@ -164,6 +164,12 @@ online example: http://react-component.github.io/input-number/examples/
|
Called when value of an InputNumber changed |
+
+ | onPressEnter |
+ Function |
+ |
+ The callback function that is triggered when Enter key is pressed. |
+
| onFocus |
Function |
diff --git a/src/index.js b/src/index.js
index b52a93af..0cc6fb4c 100644
--- a/src/index.js
+++ b/src/index.js
@@ -47,6 +47,7 @@ export default class InputNumber extends React.Component {
focusOnUpDown: PropTypes.bool,
autoFocus: PropTypes.bool,
onChange: PropTypes.func,
+ onPressEnter: PropTypes.func,
onKeyDown: PropTypes.func,
onKeyUp: PropTypes.func,
prefixCls: PropTypes.string,
@@ -86,6 +87,7 @@ export default class InputNumber extends React.Component {
style: {},
onChange: noop,
onKeyDown: noop,
+ onPressEnter: noop,
onFocus: noop,
onBlur: noop,
parser: defaultParser,
@@ -214,7 +216,7 @@ export default class InputNumber extends React.Component {
}
onKeyDown = (e, ...args) => {
- const { onKeyDown } = this.props;
+ const { onKeyDown, onPressEnter } = this.props;
if (e.keyCode === KeyCode.UP) {
const ratio = this.getRatio(e);
@@ -224,6 +226,8 @@ export default class InputNumber extends React.Component {
const ratio = this.getRatio(e);
this.down(e, ratio);
this.stop();
+ } else if (e.keyCode === KeyCode.ENTER && onPressEnter) {
+ onPressEnter(e);
}
// Trigger user key down
diff --git a/tests/index.js b/tests/index.js
index 8e22e422..441c2771 100644
--- a/tests/index.js
+++ b/tests/index.js
@@ -537,6 +537,20 @@ describe('inputNumber', () => {
Simulate.blur(inputElement);
expect(onChange.called).to.be(false);
});
+
+ it('pressEnter works', () => {
+ const onPressEnter = sinon.spy();
+ const Demo = createReactClass({
+ render() {
+ return ;
+ },
+ });
+ example = ReactDOM.render(, container);
+ inputNumber = example.refs.inputNum;
+ inputElement = ReactDOM.findDOMNode(inputNumber.input);
+ Simulate.keyDown(inputElement, { keyCode: keyCode.ENTER });
+ expect(onPressEnter.called).to.be(true);
+ });
});
describe('default value', () => {