2016-08-22 09:53:39 +08:00
---
category: Components
2016-11-09 14:43:32 +08:00
type: Data Entry
2016-09-08 16:53:50 +08:00
title: Input
2020-06-05 13:50:09 +08:00
cover: https://gw.alipayobjects.com/zos/alicdn/xS9YEJhfe/Input.svg
2016-08-22 09:53:39 +08:00
---
2019-05-07 14:57:32 +08:00
A basic widget for getting the user input is a text field. Keyboard and mouse can be used for providing or changing data.
2016-08-22 09:53:39 +08:00
2016-09-10 13:43:30 +08:00
## When To Use
2016-08-22 09:53:39 +08:00
- A user input in a form field is needed.
- A search input is required.
## API
### Input
2020-07-16 00:25:47 +08:00
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
2020-10-09 10:08:52 +08:00
| addonAfter | The label text displayed after (on the right side of) the input field | ReactNode | - | |
| addonBefore | The label text displayed before (on the left side of) the input field | ReactNode | - | |
2022-03-08 01:40:24 +08:00
| allowClear | If allow to remove input content with clear icon | boolean \| { clearIcon: ReactNode } | false | |
2020-10-21 10:33:43 +08:00
| bordered | Whether has border style | boolean | true | 4.5.0 |
2020-07-16 00:25:47 +08:00
| defaultValue | The initial input content | string | - | |
| disabled | Whether the input is disabled | boolean | false | |
| id | The ID for input | string | - | |
| maxLength | The max length | number | - | |
2022-08-01 17:39:57 +08:00
| showCount | Whether show text count | boolean \| { formatter: (info: { value: string, count: number, maxLength?: number }) => ReactNode } | false | 4.18.0 info.value: 4.23.0 |
2022-02-14 17:09:35 +08:00
| status | Set validation status | 'error' \| 'warning' | - | 4.19.0 |
2020-10-09 10:08:52 +08:00
| prefix | The prefix icon for the Input | ReactNode | - | |
2022-03-16 17:34:07 +08:00
| size | The size of the input box. Note: in the context of a form, the `middle` size is used | `large` \| `middle` \| `small` | - | |
2020-10-09 10:08:52 +08:00
| suffix | The suffix icon for the Input | ReactNode | - | |
2020-07-16 00:25:47 +08:00
| type | The type of input, see: [MDN ](https://developer.mozilla.org/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types )( use `Input.TextArea` instead of `type="textarea"` ) | string | `text` | |
| value | The input content value | string | - | |
| onChange | Callback when user input | function(e) | - | |
| onPressEnter | The callback function that is triggered when Enter key is pressed | function(e) | - | |
2016-08-22 09:53:39 +08:00
2019-05-07 14:57:32 +08:00
> When `Input` is used in a `Form.Item` context, if the `Form.Item` has the `id` and `options` props defined then `value`, `defaultValue`, and `id` props of `Input` are automatically set.
2016-08-22 09:53:39 +08:00
2021-01-01 21:40:00 +08:00
The rest of the props of Input are exactly the same as the original [input ](https://reactjs.org/docs/dom-elements.html#all-supported-html-attributes ).
2017-01-09 22:03:10 +08:00
2017-05-22 14:44:58 +08:00
### Input.TextArea
2020-07-16 00:25:47 +08:00
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
2020-10-21 10:33:43 +08:00
| allowClear | If allow to remove input content with clear icon | boolean | false | |
2020-07-16 00:25:47 +08:00
| autoSize | Height autosize feature, can be set to true \| false or an object { minRows: 2, maxRows: 6 } | boolean \| object | false | |
2020-10-21 10:33:43 +08:00
| bordered | Whether has border style | boolean | true | 4.5.0 |
2020-07-16 00:25:47 +08:00
| defaultValue | The initial input content | string | - | |
2020-10-21 10:33:43 +08:00
| maxLength | The max length | number | - | 4.7.0 |
2022-08-01 17:39:57 +08:00
| showCount | Whether show text count | boolean \| { formatter: (info: { value: string, count: number, maxLength?: number }) => string } | false | 4.7.0 formatter: 4.10.0 info.value: 4.23.0 |
2020-07-16 00:25:47 +08:00
| value | The input content value | string | - | |
| onPressEnter | The callback function that is triggered when Enter key is pressed | function(e) | - | |
| onResize | The callback function that is triggered when resize | function({ width, height }) | - | |
2017-05-22 14:44:58 +08:00
2017-09-04 15:24:08 +08:00
The rest of the props of `Input.TextArea` are the same as the original [textarea ](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea ).
2017-01-09 22:03:10 +08:00
2016-11-24 14:03:57 +08:00
#### Input.Search
2019-11-22 14:37:39 +08:00
| Property | Description | Type | Default |
| --- | --- | --- | --- |
2020-07-01 15:14:31 +08:00
| enterButton | Whether to show an enter button after input. This property conflicts with the `addonAfter` property | boolean \| ReactNode | false |
| loading | Search box with loading | boolean | false |
2020-10-21 10:33:43 +08:00
| onSearch | The callback function triggered when you click on the search-icon, the clear-icon or press the Enter key | function(value, event) | - |
2016-11-24 14:56:08 +08:00
2017-09-04 15:24:08 +08:00
Supports all props of `Input` .
2016-11-24 14:03:57 +08:00
2016-08-22 09:53:39 +08:00
#### Input.Group
2019-11-22 14:37:39 +08:00
| Property | Description | Type | Default |
| --- | --- | --- | --- |
| compact | Whether use compact style | boolean | false |
| size | The size of `Input.Group` specifies the size of the included `Input` fields. Available: `large` `default` `small` | string | `default` |
2016-08-22 09:53:39 +08:00
2019-12-26 14:37:39 +08:00
```jsx
2016-12-05 13:05:58 +08:00
< Input.Group >
2019-05-07 14:57:32 +08:00
< input / >
< input / >
2016-08-22 09:53:39 +08:00
< / Input.Group >
```
2018-11-29 10:03:16 +08:00
2019-11-22 14:37:39 +08:00
#### Input.Password
2018-11-29 10:03:16 +08:00
2020-07-15 16:53:26 +08:00
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
| iconRender | Custom toggle button | (visible) => ReactNode | (visible) => (visible ? < EyeOutlined /> : < EyeInvisibleOutlined />) | 4.3.0 |
2022-10-31 21:15:59 +08:00
| visibilityToggle | Whether show toggle button or control password visible | boolean \| [VisibilityToggle ](#VisibilityToggle ) | true | |
#### VisibilityToggle
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
| visible | Whether the password is show or hide | boolean | false | 4.24.0 |
| onVisibleChange | Callback executed when visibility of the password is changed | boolean | - | 4.24.0 |
2019-02-20 15:12:29 +08:00
2020-12-29 22:42:04 +08:00
#### Input Methods
| Name | Description | Parameters | Version |
| --- | --- | --- | --- |
| blur | Remove focus | - | |
| focus | Get focus | (option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' }) | option - 4.10.0 |
2019-02-20 15:12:29 +08:00
## FAQ
2022-04-20 10:33:42 +08:00
### Why Input lose focus when change `prefix/suffix/showCount`
2019-02-20 15:12:29 +08:00
2022-04-20 10:33:42 +08:00
When Input dynamic add or remove `prefix/suffix/showCount` will make React recreate the dom structure and new input will be not focused. You can set an empty `<span />` element to keep the dom structure:
2019-02-20 15:12:29 +08:00
```jsx
const suffix = condition ? < Icon type = "smile" / > : < span / > ;
2019-05-07 14:57:32 +08:00
< Input suffix = {suffix} / > ;
2019-02-20 15:12:29 +08:00
```
2021-03-23 15:03:47 +08:00
### Why TextArea in control can make `value` exceed `maxLength`?
When in control, component should show as what it set to avoid submit value not align with store value in Form.