• Input 输入框
    • 何时使用
    • 代码演示
      • 基本使用
      • 适应文本高度的文本域
      • 前缀和后缀
      • 搜索框
      • 三种大小
      • 输入框组合
      • 文本域
      • 前置/后置标签
      • 输入时格式化展示
  • API
    • Input
    • Input 事件
    • Input.TextArea
    • Input.TextArea事件
      • Input.Search
    • Input.Search 事件
      • Input.Group

    Input 输入框

    通过鼠标或键盘输入内容,是最基础的表单域的包装。

    何时使用

    • 需要用户输入表单域内容时。
    • 提供组合型输入框,带搜索的输入框,还可以进行大小选择。

    代码演示

    Input输入框 - 图1

    基本使用

    基本使用。

    1. <template>
    2. <a-input placeholder="Basic usage"/>
    3. </template>

    Input输入框 - 图2

    适应文本高度的文本域

    autosize 属性适用于 textarea 节点,并且只有高度会自动变化。另外 autosize 可以设定为一个对象,指定最小行数和最大行数。

    1. <template>
    2. <div>
    3. <a-textarea placeholder="Autosize height based on content lines" autosize />
    4. <div style="margin: 24px 0" />
    5. <a-textarea placeholder="Autosize height with minimum and maximum number of lines" :autosize="{ minRows: 2, maxRows: 6 }" />
    6. </div>
    7. </template>

    Input输入框 - 图3

    前缀和后缀

    在输入框上添加前缀或后缀图标。

    1. <template>
    2. <div class="components-input-demo-presuffix">
    3. <a-input placeholder="Basic usage" v-model="userName" ref="userNameInput">
    4. <a-icon slot="prefix" type="user" />
    5. <a-icon v-if="userName" slot="suffix" type="close-circle" @click="emitEmpty" />
    6. </a-input>
    7. </div>
    8. </template>
    9. <script>
    10. export default {
    11. data () {
    12. return {
    13. userName: '',
    14. }
    15. },
    16. methods: {
    17. emitEmpty () {
    18. this.$refs.userNameInput.focus()
    19. this.userName = ''
    20. },
    21. },
    22. }
    23. </script>
    24. <style scoped>
    25. .components-input-demo-presuffix .anticon-close-circle {
    26. cursor: pointer;
    27. color: #ccc;
    28. transition: color 0.3s;
    29. font-size: 12px;
    30. }
    31. .components-input-demo-presuffix .anticon-close-circle:hover {
    32. color: #999;
    33. }
    34. .components-input-demo-presuffix .anticon-close-circle:active {
    35. color: #666;
    36. }
    37. </style>

    Input输入框 - 图4

    搜索框

    带有搜索按钮的输入框。

    1. <template>
    2. <div>
    3. <a-input-search
    4. placeholder="input search text"
    5. style="width: 200px"
    6. @search="onSearch"
    7. />
    8. <br /><br />
    9. <a-input-search
    10. placeholder="input search text"
    11. @search="onSearch"
    12. enterButton
    13. />
    14. <br /><br />
    15. <a-input-search placeholder="input search text" @search="onSearch" enterButton="Search" size="large" />
    16. <br /><br />
    17. <a-input-search placeholder="input search text" @search="onSearch" size="large">
    18. <a-button slot="enterButton">Custom</a-button>
    19. </a-input-search>
    20. </div>
    21. </template>
    22. <script>
    23. export default {
    24. methods: {
    25. onSearch (value) {
    26. console.log(value)
    27. },
    28. },
    29. }
    30. </script>

    Input输入框 - 图5

    三种大小

    我们为 <Input/> 输入框定义了三种尺寸(大、默认、小),高度分别为 40px32px24px

    1. <template>
    2. <div class="components-input-demo-size">
    3. <a-input size="large" placeholder="large size" />
    4. <a-input placeholder="default size" />
    5. <a-input size="small" placeholder="small size" />
    6. </div>
    7. </template>
    8. <style scoped>
    9. .components-input-demo-size .ant-input {
    10. width: 200px;
    11. margin: 0 8px 8px 0;
    12. }
    13. </style>

    Input输入框 - 图6

    输入框组合

    输入框的组合展现。注意:使用 compact 模式时,不需要通过 Col 来控制宽度。

    1. <template>
    2. <div>
    3. <a-input-group size="large">
    4. <a-col :span="5">
    5. <a-input defaultValue="0571" />
    6. </a-col>
    7. <a-col :span="8">
    8. <a-input defaultValue="26888888" />
    9. </a-col>
    10. </a-input-group>
    11. <br />
    12. <a-input-group compact>
    13. <a-input style="width: 20%" defaultValue="0571" />
    14. <a-input style="width: 30%" defaultValue="26888888" />
    15. </a-input-group>
    16. <br />
    17. <a-input-group compact>
    18. <a-select defaultValue="Zhejiang">
    19. <a-select-option value="Zhejiang">Zhejiang</a-select-option>
    20. <a-select-option value="Jiangsu">Jiangsu</a-select-option>
    21. </a-select>
    22. <a-input style="width: 50%" defaultValue="Xihu District, Hangzhou" />
    23. </a-input-group>
    24. <br />
    25. <a-input-group compact>
    26. <a-select defaultValue="Option1">
    27. <a-select-option value="Option1">Option1</a-select-option>
    28. <a-select-option value="Option2">Option2</a-select-option>
    29. </a-select>
    30. <a-input style="width: 50%" defaultValue="input content" />
    31. </a-input-group>
    32. <br />
    33. <a-input-group compact>
    34. <a-input style="width: 50%" defaultValue="input content" />
    35. <a-date-picker />
    36. </a-input-group>
    37. <br />
    38. <a-input-group compact>
    39. <a-select defaultValue="Option1-1">
    40. <a-select-option value="Option1-1">Option1-1</a-select-option>
    41. <a-select-option value="Option1-2">Option1-2</a-select-option>
    42. </a-select>
    43. <a-select defaultValue="Option2-2">
    44. <a-select-option value="Option2-1">Option2-1</a-select-option>
    45. <a-select-option value="Option2-2">Option2-2</a-select-option>
    46. </a-select>
    47. </a-input-group>
    48. <br />
    49. <a-input-group compact>
    50. <a-select defaultValue="1">
    51. <a-select-option value="1">Between</a-select-option>
    52. <a-select-option value="2">Except</a-select-option>
    53. </a-select>
    54. <a-input style=" width: 100px; text-align: center" placeholder="Minimum" />
    55. <a-input style=" width: 30px; border-left: 0; pointer-events: none; backgroundColor: #fff" placeholder="~" disabled />
    56. <a-input style="width: 100px; text-align: center; border-left: 0" placeholder="Maximum" />
    57. </a-input-group>
    58. <br />
    59. <a-input-group compact>
    60. <a-select defaultValue="Sign Up">
    61. <a-select-option value="Sign Up">Sign Up</a-select-option>
    62. <a-select-option value="Sign In">Sign In</a-select-option>
    63. </a-select>
    64. <a-auto-complete
    65. :dataSource="dataSource"
    66. style="width: 200px"
    67. @change="handleChange"
    68. placeholder="Email"
    69. />
    70. </a-input-group>
    71. <br />
    72. <a-input-group compact>
    73. <a-select style="width: 30%" defaultValue="Home">
    74. <a-select-option value="Home">Home</a-select-option>
    75. <a-select-option value="Company">Company</a-select-option>
    76. </a-select>
    77. <a-cascader style="width: 70%" :options="options" placeholder="Select Address" />
    78. </a-input-group>
    79. </div>
    80. </template>
    81. <script>
    82. const options = [{
    83. value: 'zhejiang',
    84. label: 'Zhejiang',
    85. children: [{
    86. value: 'hangzhou',
    87. label: 'Hangzhou',
    88. children: [{
    89. value: 'xihu',
    90. label: 'West Lake',
    91. }],
    92. }],
    93. }, {
    94. value: 'jiangsu',
    95. label: 'Jiangsu',
    96. children: [{
    97. value: 'nanjing',
    98. label: 'Nanjing',
    99. children: [{
    100. value: 'zhonghuamen',
    101. label: 'Zhong Hua Men',
    102. }],
    103. }],
    104. }];
    105. export default {
    106. data() {
    107. return {
    108. options,
    109. dataSource: [],
    110. }
    111. },
    112. methods: {
    113. handleChange(value) {
    114. this.dataSource = !value || value.indexOf('@') >= 0 ? [] : [
    115. `${value}@gmail.com`,
    116. `${value}@163.com`,
    117. `${value}@qq.com`,
    118. ];
    119. }
    120. }
    121. }
    122. </script>

    Input输入框 - 图7

    文本域

    用于多行输入。

    1. <template>
    2. <a-textarea placeholder="Basic usage" :rows="4"/>
    3. </template>

    Input输入框 - 图8

    前置/后置标签

    用于配置一些固定组合。

    1. <template>
    2. <div>
    3. <div style="margin-bottom: 16px">
    4. <a-input addonBefore="Http://" addonAfter=".com" defaultValue="mysite" />
    5. </div>
    6. <div style="margin-bottom: 16px">
    7. <a-input defaultValue="mysite">
    8. <a-select slot="addonBefore" defaultValue="Http://" style="width: 90px">
    9. <a-select-option value="Http://">Http://</a-select-option>
    10. <a-select-option value="Https://">Https://</a-select-option>
    11. </a-select>
    12. <a-select slot="addonAfter" defaultValue=".com" style="width: 80px">
    13. <a-select-option value=".com">.com</a-select-option>
    14. <a-select-option value=".jp">.jp</a-select-option>
    15. <a-select-option value=".cn">.cn</a-select-option>
    16. <a-select-option value=".org">.org</a-select-option>
    17. </a-select>
    18. </a-input>
    19. </div>
    20. <div style="margin-bottom: 16px">
    21. <a-input defaultValue="mysite">
    22. <a-icon slot="addonAfter" type="setting"/>
    23. </a-input>
    24. </div>
    25. </div>
    26. </template>

    Input输入框 - 图9

    输入时格式化展示

    结合 Tooltip 组件,实现一个数值输入框,方便内容超长时的全量展现。

    1. <template>
    2. <a-tooltip
    3. :trigger="['focus']"
    4. placement="topLeft"
    5. overlayClassName="numeric-input"
    6. >
    7. <span slot="title" v-if="value" class="numeric-input-title">
    8. {{value !== '-' ? formatNumber(value) : '-'}}
    9. </span>
    10. <template slot="title" v-else>
    11. Input a number
    12. </template>
    13. <a-input
    14. :value="value"
    15. @change="onChange"
    16. @blur="onBlur"
    17. placeholder="Input a number"
    18. maxLength="25"
    19. style="width: 120px"
    20. />
    21. </a-tooltip>
    22. </template>
    23. <script>
    24. function formatNumber (value) {
    25. value += ''
    26. const list = value.split('.')
    27. const prefix = list[0].charAt(0) === '-' ? '-' : ''
    28. let num = prefix ? list[0].slice(1) : list[0]
    29. let result = ''
    30. while (num.length > 3) {
    31. result = `,${num.slice(-3)}${result}`
    32. num = num.slice(0, num.length - 3)
    33. }
    34. if (num) {
    35. result = num + result
    36. }
    37. return `${prefix}${result}${list[1] ? `.${list[1]}` : ''}`
    38. }
    39. export default {
    40. data () {
    41. return {
    42. value: '',
    43. }
    44. },
    45. methods: {
    46. formatNumber,
    47. onChange (e) {
    48. const { value } = e.target
    49. const reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/
    50. if ((!isNaN(value) && reg.test(value)) || value === '' || value === '-') {
    51. this.value = value
    52. }
    53. },
    54. // '.' at the end or only '-' in the input box.
    55. onBlur () {
    56. const { value, onChange } = this
    57. if (value.charAt(value.length - 1) === '.' || value === '-') {
    58. onChange({ value: value.slice(0, -1) })
    59. }
    60. },
    61. },
    62. }
    63. </script>
    64. <style>
    65. /* to prevent the arrow overflow the popup container,
    66. or the height is not enough when content is empty */
    67. .numeric-input .ant-tooltip-inner {
    68. min-width: 32px;
    69. min-height: 37px;
    70. }
    71. .numeric-input .numeric-input-title {
    72. font-size: 14px;
    73. }
    74. </style>

    API

    Input

    参数说明类型默认值
    addonAfter带标签的 input,设置后置标签string|slot
    addonBefore带标签的 input,设置前置标签string|slot
    defaultValue输入框默认内容string
    disabled是否禁用状态,默认为 falsebooleanfalse
    id输入框的 idstring
    prefix带有前缀图标的 inputstring|slot
    size控件大小。注:标准表单内的输入框大小限制为 large。可选 large default smallstringdefault
    suffix带有后缀图标的 inputstring|slot
    type声明 input 类型,同原生 input 标签的 type 属性,见:MDN(请直接使用 Input.TextArea 代替 type="textarea")。stringtext
    value(v-model)输入框内容string

    Input 事件

    事件名称说明回调参数
    change输入框内容变化时的回调function(e)
    pressEnter按下回车的回调function(e)

    如果 InputForm.Item 内,并且 Form.Item 设置了 idoptions 属性,则 value defaultValueid 属性会被自动设置。

    Input.TextArea

    参数说明类型默认值
    autosize自适应内容高度,可设置为 true|false 或对象:{ minRows: 2, maxRows: 6 }boolean|objectfalse
    defaultValue输入框默认内容string
    value(v-model)输入框内容string

    Input.TextArea事件

    事件名称说明回调参数
    pressEnter按下回车的回调function(e)

    Input.TextArea 的其他属性和浏览器自带的 textarea 一致。

    参数说明类型默认值
    enterButton是否有确认按钮,可设为按钮文字boolean|slotfalse

    Input.Search 事件

    事件名称说明回调参数
    search点击搜索或按下回车键时的回调function(value, event)

    其余属性和 Input 一致。

    Input.Group

    参数说明类型默认值
    compact是否用紧凑模式booleanfalse
    sizeInput.Group 中所有的 Input 的大小,可选 large default smallstringdefault
    1. <a-input-group>
    2. <a-input />
    3. <a-input />
    4. </a-input-group>