Input 输入框
通过鼠标或键盘输入内容,是最基础的表单域的包装。
何时使用
- 需要用户输入表单域内容时。
- 提供组合型输入框,带搜索的输入框,还可以进行大小选择。
基本使用
基本使用。
vue
<template>
<g-input v-model:value="value" placeholder="Basic usage" />
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value = ref('')
return {
value
}
}
}
</script>三种大小
我们为 <Input /> 输入框定义了三种尺寸(大、默认、小),高度分别为 40px、32px 和 24px。
vue
<template>
<div class="components-input-demo-size">
<g-input v-model:value="value1" size="large" placeholder="large size" />
<g-input v-model:value="value2" placeholder="default size" />
<g-input v-model:value="value3" size="small" placeholder="small size" />
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value1 = ref('')
const value2 = ref('')
const value3 = ref('')
return {
value1,
value2,
value3
}
}
}
</script>
<style>
.components-input-demo-size .g-input {
width: 200px;
margin: 0 8px 8px 0;
}
</style>前置/后置标签
用于配置一些固定组合。
vue
<template>
<div>
<div style="margin-bottom: 16px;">
<g-input addon-before="Http://" addon-after=".com" default-value="mysite" />
</div>
<div style="margin-bottom: 16px;">
<g-input default-value="mysite">
<template #addonBefore>
<g-select v-model:value="selectBefore" style="width: 90px;">
<g-select-option value="Http://">Http://</g-select-option>
<g-select-option value="Https://">Https://</g-select-option>
</g-select>
</template>
<template #addonAfter>
<g-select v-model:value="selectAfter" style="width: 80px;">
<g-select-option value=".com">.com</g-select-option>
<g-select-option value=".jp">.jp</g-select-option>
<g-select-option value=".cn">.cn</g-select-option>
<g-select-option value=".org">.org</g-select-option>
</g-select>
</template>
</g-input>
</div>
<div style="margin-bottom: 16px;">
<g-input default-value="mysite">
<template #addonAfter>
<g-icon type="setting" />
</template>
</g-input>
</div>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const selectBefore = ref('Http://')
const selectAfter = ref('.com')
return {
selectBefore,
selectAfter
}
}
}
</script>搜索框
带有搜索按钮的输入框。
vue
<template>
<div>
<g-input-search
v-model:value="value1"
placeholder="input search text"
enter-button
@search="onSearch"
/>
<br />
<br />
<g-input-search
v-model:value="value2"
placeholder="input search text"
enter-button="Search"
size="large"
@search="onSearch"
/>
<br />
<br />
<g-input-search
v-model:value="value3"
placeholder="input search text"
@search="onSearch"
>
<template #enterButton>
<g-button>
<template #icon><g-icon type="search" /></template>
Custom
</g-button>
</template>
</g-input-search>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value1 = ref('')
const value2 = ref('')
const value3 = ref('')
const onSearch = (searchValue) => {
console.log('use search', searchValue)
}
return {
value1,
value2,
value3,
onSearch
}
}
}
</script>文本域
用于多行输入。
vue
<template>
<div>
<g-textarea
v-model:value="value"
placeholder="Basic usage"
:rows="4"
/>
<br />
<br />
<g-textarea
v-model:value="value"
placeholder="Autosize height based on content lines"
auto-size
/>
<br />
<br />
<g-textarea
v-model:value="value"
placeholder="Autosize height with minimum and maximum number of lines"
:auto-size="{ minRows: 2, maxRows: 6 }"
/>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value = ref('')
return {
value
}
}
}
</script>输入框组合
输入框的组合展现。
vue
<template>
<div>
<g-input-group size="large">
<g-row :gutter="8">
<g-col :span="5">
<g-input v-model:value="value1" />
</g-col>
<g-col :span="8">
<g-input v-model:value="value2" />
</g-col>
</g-row>
</g-input-group>
<br />
<g-input-group compact>
<g-input v-model:value="value3" style="width: 20%" />
<g-input v-model:value="value4" style="width: 30%" />
</g-input-group>
<br />
<g-input-group compact>
<g-select v-model:value="value5">
<g-select-option value="Zhejiang">Zhejiang</g-select-option>
<g-select-option value="Jiangsu">Jiangsu</g-select-option>
</g-select>
<g-input v-model:value="value6" style="width: 50%" />
</g-input-group>
<br />
<g-input-group compact>
<g-input v-model:value="value7" style="width: 50%" />
<g-date-picker v-model:value="value8" style="width: 50%" />
</g-input-group>
<br />
<g-input-group compact>
<g-select v-model:value="value9">
<g-select-option value="Option1">Option1</g-select-option>
<g-select-option value="Option2">Option2</g-select-option>
</g-select>
<g-input v-model:value="value10" style="width: 50%" />
</g-input-group>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value1 = ref('')
const value2 = ref('')
const value3 = ref('')
const value4 = ref('')
const value5 = ref('Zhejiang')
const value6 = ref('')
const value7 = ref('')
const value8 = ref('')
const value9 = ref('Option1')
const value10 = ref('')
return {
value1,
value2,
value3,
value4,
value5,
value6,
value7,
value8,
value9,
value10
}
}
}
</script>密码框
密码框。
vue
<template>
<div>
<g-input-password
v-model:value="password"
placeholder="input password"
/>
<br />
<br />
<g-input-password
v-model:value="password"
placeholder="input password"
:visibility-toggle="false"
/>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const password = ref('')
return {
password
}
}
}
</script>带图标的输入框
带有图标的输入框。
vue
<template>
<div>
<g-input v-model:value="value1" placeholder="Enter your username">
<template #prefix>
<g-icon type="user" style="color: rgba(0,0,0,.25)" />
</template>
</g-input>
<br />
<br />
<g-input v-model:value="value2" placeholder="Enter your username">
<template #suffix>
<g-tooltip title="Extra information">
<g-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
</g-tooltip>
</template>
</g-input>
<br />
<br />
<g-input v-model:value="value3" placeholder="Enter your username">
<template #prefix>
<g-icon type="user" style="color: rgba(0,0,0,.25)" />
</template>
<template #suffix>
<g-tooltip title="Extra information">
<g-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
</g-tooltip>
</template>
</g-input>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value1 = ref('')
const value2 = ref('')
const value3 = ref('')
return {
value1,
value2,
value3
}
}
}
</script>数字输入框
数字输入框。
vue
<template>
<div>
<g-input-number
v-model:value="value1"
:min="1"
:max="10"
:default-value="3"
@change="onChange"
/>
<br />
<g-input-number
v-model:value="value2"
:min="0"
:max="10"
:step="0.1"
:default-value="3"
@change="onChange"
/>
<br />
<g-input-number
v-model:value="value3"
size="small"
:min="1"
:max="10"
:default-value="3"
@change="onChange"
/>
<br />
<g-input-number
v-model:value="value4"
size="large"
:min="1"
:max="10"
:default-value="3"
@change="onChange"
/>
<br />
<g-input-number v-model:value="value5" disabled />
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const value1 = ref(3)
const value2 = ref(3)
const value3 = ref(3)
const value4 = ref(3)
const value5 = ref(3)
const onChange = (value) => {
console.log('changed', value)
}
return {
value1,
value2,
value3,
value4,
value5,
onChange
}
}
}
</script>API
Input
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| addonAfter | 带标签的 input,设置后置标签 | string | slot | - | |
| addonBefore | 带标签的 input,设置前置标签 | string | slot | - | |
| allowClear | 可以点击清除图标删除内容 | boolean | - | |
| bordered | 是否有边框 | boolean | true | 4.5.0 |
| defaultValue | 输入框默认内容 | string | - | |
| disabled | 是否禁用状态,默认为 false | boolean | false | |
| id | 输入框的 id | string | - | |
| maxlength | 最大长度 | number | - | |
| prefix | 带有前缀图标的 input | string | slot | - | |
| showCount | 是否展示字符数 | boolean | false | 4.0.0 |
| size | 控件大小。注:标准表单内的输入框大小限制为 large。 | large | middle | small | - | |
| suffix | 带有后缀图标的 input | string | slot | - | |
| type | 声明 input 类型,同原生 input 标签的 type 属性,见:MDN(请直接使用 Input.TextArea 代替 type="textarea")。 | string | text | |
| value(v-model) | 输入框内容 | string | - |
Input 事件
| 事件名称 | 说明 | 回调参数 |
|---|---|---|
| blur | 失去焦点时触发 | function(e) |
| change | 输入框内容变化时的回调 | function(e) |
| focus | 获得焦点时触发 | function(e) |
| pressEnter | 按下回车的回调 | function(e) |
Input.TextArea
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| allowClear | 可以点击清除图标删除内容 | boolean | - | |
| autoSize | 自适应内容高度,可设置为 true | false 或对象: | boolean | object | false | |
| bordered | 是否有边框 | boolean | true | 4.5.0 |
| defaultValue | 输入框默认内容 | string | - | |
| maxlength | 内容最大长度 | number | - | |
| rows | 输入框行数 | number | 2 | |
| showCount | 是否展示字符数 | boolean | false | |
| value(v-model) | 输入框内容 | string | - |
Input.TextArea 事件
| 事件名称 | 说明 | 回调参数 |
|---|---|---|
| pressEnter | 按下回车的回调 | function(e) |
| resize | resize 回调 | function({ width, height }) |
Input.Search
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| enterButton | 是否有确认按钮,可设为按钮文字。该属性会与 addonAfter 冲突。 | boolean | slot | false |
| loading | 搜索 loading | boolean | false |
Input.Search 事件
| 事件名称 | 说明 | 回调参数 |
|---|---|---|
| search | 点击搜索或按下回车键时的回调 | function(value, event) |
其余属性和 Input 一致。
Input.Group
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| compact | 是否用紧凑模式 | boolean | false |
| size | Input.Group 中所有的 Input 的大小,可选 large default small | string | default |
Input.Password
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| iconRender | 自定义切换按钮 | (visible) => VNode | (visible) => (visible ? : ) | 1.5.0 |
| visibilityToggle | 是否显示切换按钮 | boolean | true |
Input.Number
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| autoFocus | 自动获取焦点 | boolean | false | |
| bordered | 是否有边框 | boolean | true | 4.5.0 |
| controls | 是否显示增减按钮 | boolean | true | 4.17.0 |
| decimalSeparator | 小数点 | string | - | |
| defaultValue | 初始值 | number | - | |
| disabled | 禁用 | boolean | false | |
| formatter | 指定输入框展示值的格式 | function(value: number | string): string | - | |
| keyboard | 是否启用键盘快捷行为 | boolean | true | 4.12.0 |
| max | 最大值 | number | Infinity | |
| min | 最小值 | number | -Infinity | |
| parser | 指定从 formatter 里转换回数字的方式,和 formatter 搭配使用 | function( string): number | - | |
| precision | 数值精度 | number | - | |
| readOnly | 只读 | boolean | false | |
| size | 输入框大小 | large | middle | small | - | |
| step | 每次改变步数,可以为小数 | number | string | 1 | |
| stringMode | 字符值模式,开启后支持高精度小数。同时 change 事件将返回 string 类型 | boolean | false | 4.13.0 |
| value(v-model) | 当前值 | number | - |
Input.Number 事件
| 事件名称 | 说明 | 回调参数 | 版本 |
|---|---|---|---|
| blur | 失去焦点时回调 | function | - |
| change | 变化回调 | Function(value: number | string) | - |
| focus | 获得焦点时回调 | function | - |
| pressEnter | 按下回车的回调 | function(e) | - |
| step | 点击上下箭头的回调 | (value: number, info: { offset: number, type: 'up' | 'down' }) => void | 4.7.0 |
方法
| 名称 | 说明 |
|---|---|
| blur() | 移除焦点 |
| focus() | 获取焦点 |