---
localeCode: en-US
order: 26
category: Input
title: InputNumber
subTitle: InputNumber
icon: doc-inputnumber
brief: Through the mouse or keyboard, input the value in the range. Unlike Input, it has a stepper operation area for digital scenes, and it can display more complex content formats when used with Parser.
---
## When to Use
When you need to get a standard value.
## Demos
### How to import
```jsx import
import { InputNumber } from '@douyinfe/semi-ui';
```
### Basic Input Box
```jsx live=true
import React from 'react';
import { InputNumber } from '@douyinfe/semi-ui';
class App extends React.Component {
render() {
return (
);
}
}
```
```jsx live=true
import React from 'react';
import { InputNumber } from '@douyinfe/semi-ui';
class App extends React.Component {
render() {
return (
);
}
}
```
### Inner Buttons
With `innerButtons`, you can hide the buttons on the right into the interior, which will only be displayed when hover occurs
```jsx live=true
import React from 'react';
import { InputNumber } from '@douyinfe/semi-ui';
() => (
);
```
Set `hidebuttons` to `true` to hide the buttons completely
```jsx live=true
import React from 'react';
import { InputNumber } from '@douyinfe/semi-ui';
() => (
);
```
### Size
```jsx live=true
import React from 'react';
import { InputNumber } from '@douyinfe/semi-ui';
class App extends React.Component {
render() {
return (
);
}
}
```
### Custom Display Format and Resolution
> A pair of methods for `formatter` and `parser`, which generally need to be set at the same time, otherwise the value cannot be resolved correctly.
```jsx live=true
import React from 'react';
import { InputNumber } from '@douyinfe/semi-ui';
class App extends React.Component {
log(v) {
console.log(`Changed to: [${typeof v}] ${v}`);
}
render() {
return (
);
}
}
```
### Can Only Enter Numbers
With formatter and onNumberChange(**>=v1.9.0**), a pure digital input box can be implemented.
```jsx live=true
import React from 'react';
import { InputNumber } from '@douyinfe/semi-ui';
function Demo () {
return (
`${value}`.replace(/\D/g, '')}
onNumberChange={number => console.log(number)}
min={0}
max={Number.MAX_SAFE_INTEGER}
/>
);
}
```
## API Reference
| Properties | Instructions | type | Default | Version |
| ------------ | ----------------------------------------------------------------------------------------------- | --------------------------------- | --------- | ---------- |
| autofocus | Automatic access to focus | boolean | false | |
| className | class name of InputNumber | string | - |
| clearIcon | Can be used to customize the clear button, valid when showClear is true | ReactNode | | 2.25.0 |
| defaultValue | Default | number | | |
| disabled | Disabled status | boolean | false | |
| formatter | Specifies the format of the input box to display the value | (value: number\|string) => string | - | |
| hideButtons | Hide the "up/down" button when passing `true` | boolean | false | **1.0.0** |
| innerButtons | Show the "up/down" button in input box when passing `true` | boolean | false | **1.5.0** |
| insetLabel | Prefix label, lower priority than `prefix` | string\|ReactNode | | |
| keepFocus | Keep the input box focused when you click the button | boolean | false | **1.10.0** |
| max | Limit maximum value | number | Infinity | |
| min | Limit minimum value | number | -Infinity | |
| parser | Specifies how to convert back number string from formatter and use them in conjunction with formatter | (value: string) => string | - | |
| precision | Numerical precision | number | - | |
| prefix | Prefix content | string\|ReactNode | | |
| pressInterval| How often will the click event be triggered when the button is long pressed, in milliseconds | number | 250 | |
| pressTimeout | When the button is long pressed, how long will the click event be triggered after the delay, in milliseconds | number | 250 | |
| preventScroll | Indicates whether the browser should scroll the document to display the newly focused element, acting on the focus method inside the component, excluding the component passed in by the user | boolean | | |
| shiftStep | Step size for pressing the shift key, it can be a decimal. The default value was adjusted from 1 to 10 in v2.13 | number | 10 | **1.5.0** |
| showClear | Do you show the clear button? | boolean | false | **0.35.0** |
| size | Enter box size, optional value: "default"\|"small"\|"large" | string | 'default' | |
| step | Each time you change the number of steps, it can be a decimal. | number | 1 | |
| style | Inline style of InputNumber | CSSProperties | - |
| suffix | Custom suffix | ReactNode | | |
| value | Current value | number | | |
| onBlur | Callback when focus is lost | (e: domEvent) => void | () => {} | **1.0.0** |
| onChange | Change callback | (value: number\|string) => void | - | |
| onFocus | Callback when focus is obtained | (e: domEvent) => void | () => {} | **1.0.0** |
| onNumberChange | Number change callback | (value: number) => void | - | **1.9.0** |
## Methods
Some internal methods provided by InputNumber can be accessed through ref:
| Name | Description |
| ------- | --------------- |
| blur() | Move the focus. |
| focus() | Get the focus. |
## Accessibility
Guideline: https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/
### ARIA
- InputNumber has `spinbutton` role
- spinbutton uses `aria-valuenow` for current value, `aria-valuemax` for acceptable maximum value, and `aria-valuemin` for acceptable minimum value
- When InputNumber is used in Form, the value of the input box's `aria-labeledby` reference is Field label
### Keyboard and Focus
- InputNumber can get focus, keyboard users can use `Tab` and `Shift + Tab` to switch focus (Increase and decrease buttons are not focusable)
- Keyboard users can press up key ⬆️ or down key ⬇️ and the input value will increase or decrease by `step` (default is 1)
- Hold down Shift + Up ⬆️ or Down ⬇️ , the input value will increase or decrease by `shiftStep` (default is 10)
## Design Tokens