Input 输入框
代码演示
基础用法
Input输入框组件最基础的用法。
查看代码 < />
<template>
<w-input v-model="value" placeholder="请输入主诉"></w-input>
</template>
<script>
export default {
data () {
return {
value: ''
}
}
}
</script>
禁用状态
为组件添加 disabled 属性即可禁用输入框。
查看代码 < />
<template>
<w-input v-model="value" placeholder="请输入内容" disabled></w-input>
</template>
<script>
export default {
data () {
return {
value: ''
}
}
}
</script>
清空内容
为组件添加 clearable 属性即可激活清空内容的功能按钮。
查看代码 < />
<template>
<w-input v-model="value" placeholder="请输入内容" clearable></w-input>
</template>
<script>
export default {
data () {
return {
value: ''
}
}
}
</script>
尺寸选择
一般地, 推荐使用 size='medium' 以达到精致紧凑的视觉效果, 但仍有不同尺寸 (large / medium / small / mini) 以供选择。
查看代码 < />
<template>
<w-input v-model="value1" size="large" placeholder="large (36)"></w-input>
<w-input v-model="value2" size="medium" placeholder="medium (32)"></w-input>
<w-input v-model="value3" size="small" placeholder="small (28)"></w-input>
<w-input v-model="value4" size="mini" placeholder="mini (24)"></w-input>
</template>
<script>
export default {
data () {
return {
value1: '',
value2: '',
value3: '',
value4: ''
}
}
}
</script>
聚焦时展开列表
输入时展开列表
自定义模板
选择输入框
当输入框 输入内容 或 聚焦输入框 时会呈现一个下拉菜单提供选择。
查看代码 < />
<template>
<div class="demo-wrapper">
<h3>聚焦时展开列表</h3>
<w-input-suggestion v-model="value" placeholder="请输入科室名称"
:fetchSuggestionList="querySuggestions"></w-input-suggestion>
</div>
<div class="demo-wrapper">
<h3>输入时展开列表</h3>
<w-input-suggestion v-model="value" placeholder="请输入科室名称"
:isFocusTrigger="false" clearable
:fetchSuggestionList="querySuggestions"
@select="handleSelect"></w-input-suggestion>
</div>
<div class="demo-wrapper">
<h3>自定义模板</h3>
<w-input-suggestion v-model="value"
placeholder="请输入科室名称" popper-class="my-popper"
:fetchSuggestionList="querySuggestions" @select="handleSelect">
<template slot-scope="{item}">
<span v-text="item.value" class="value"></span>
<span v-text="`(${item.count}人次)`" class="count"></span>
</template>
</w-input-suggestion>
</div>
</template>
<script>
export default {
data () {
return {
value1: '',
value2: '',
value3: '',
list: [{
value: '全科诊疗科',
count: 22
}, {
value: '妇产科',
count: 18
}, {
value: '中医门诊',
count: 8
}, {
value: '普通急诊',
count: 10
}, {
value: '泌尿科',
count: 3
}]
}
},
methods: {
querySuggestions (query, cb) {
let current = this.list
let results = query ? current.filter(item => {
return item && item.value.toLowerCase().indexOf(query.toLowerCase()) > -1
}) : current;
cb(results)
},
handleSelect (current) {
console.log(current)
}
}
}
</script>
<style lang="scss">
.my-popper {
.count {
float: right;
color: #ccc;
}
}
</style>
远程搜索
向服务端异步请求数据时, 可以参考此例。
查看代码 < />
<template>
<w-input-suggestion v-model="value" placeholder="请输入科室名称"
:fetchSuggestionList="queryDataAsync"></w-input-suggestion>
</template>
<script>
export default {
data () {
return {
value: '',
list: []
}
},
methods: {
renderAllList () {
return [{
value: '全科诊疗科'
}, {
value: '妇产科'
}, {
value: '中医门诊'
}, {
value: '普通急诊'
}, {
value: '泌尿科'
}]
},
queryDataAsync (query, cb) {
// 模拟数据请求
clearTimeout(this.timeout)
this.timeout = setTimeout(() => {
let current = this.list
let results = query ? current.filter(item => {
return item && item.value.toLowerCase().indexOf(query.toLowerCase()) > -1
}) : current
cb(results)
}, 3000 * Math.random())
}
},
mounted () {
this.list = this.renderAllList()
}
}
</script>
普通文本
icon按钮
推荐输入组合
复合输入框
为组件添加 pre-append 和 suf-append 属性设置输入框的首部元素与尾部元素, 如果suf-append传入的为普通文本元素, 可以用 sufAppendIsButton 将普通文本转变为按。
查看代码 < />
<template>
<section class="demo-wrapper">
<h3 class="label">普通文本</h3>
<w-input v-model="value1">
<template slot="pre-append">
<w-select v-model="value4" placeholder="请选择">
<w-option v-for="item in list"
:key="item.value"
:label="item.label"
:value="item.value">
</w-option>
</w-select>
</template>
<template slot="suf-append"><span style="padding: 0 5px;">ml</span></template>
</w-input>
</section>
<section class="demo-wrapper">
<h3 class="label">icon按钮</h3>
<w-input v-model="value2" sufAppendIsButton>
<template slot="suf-append">
<i class="w-icon-search expand-range"></i>
</template>
</w-input>
</section>
<section class="demo-wrapper">
<h3 class="label">推荐输入组合</h3>
<w-input-suggestion v-model="value3" value-key="label"
:fetchSuggestionList="querySuggestions">
<template slot="suf-append">
<w-button type="primary">submit</w-button>
</template>
</w-input-suggestion>
</section>
</template>
<script>
export default {
data () {
return {
value1: '',
value2: '',
value3: '',
value4: '',
list: [{
label: '全科诊疗科',
value: 22
}, {
label: '妇产科',
value: 18
}, {
label: '中医门诊',
value: 8
}, {
label: '普通急诊',
value: 10
}, {
label: '泌尿科',
value: 3
}],
}
},
methods: {
querySuggestions (query, cb) {
let current = this.list
let results = query ? current.filter(item => {
return item && item.value.toLowerCase().indexOf(query.toLowerCase()) > -1
}) : current
cb(results)
}
}
}
</script>
<style lang="scss">
// 扩展可点击区域
.expand-range {
position: relative;
&::after {
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
content: '';
}
}
</style>
文本域
将组件的type设置为 'textarea' 即可将input切换为文本域。 'rows' 属性可以为文本域设置默认展示行数。
查看代码 < />
<template>
<w-input v-model="value" type="textarea"
:rows="4" :maxlength="100" showCounter></w-input>
</template>
<script>
export default {
data () {
return {
value: ''
}
}
}
</script>
API
Input Attributes
参数 | 说明 | 类型 | 可选值 | 默认值 | Version |
---|---|---|---|---|---|
autocomplete | 是否使用浏览器的记忆功能自动填充文本 | String | — | on / off | |
clearable | 是否可以被清空 | Boolean | — | false | |
disabled | 禁用输入框 | Boolean | — | false | |
is-center | 文字是否居中对齐(默认为左对齐) | Boolean | — | false | |
maxlength | 最大输入长度 | Number | — | — | |
minlength | 最小输入长度 | Number | — | — | |
placeholder | 占位文本 | String | — | — | |
prefix-icon | 输入框首部图标, 值为通用字体图标的className | String | — | — | |
readonly | 是否只读 | Boolean | — | — | |
rows | 行数(type为textarea 时有效) | Number | — | — | |
resize | 是否允许文本域拖动操作(仅当type为textarea时生效) | String | none, both, horizontal, vertical | — | |
suf-append-is-button | 复合输入框中尾部后缀是否为按钮 | Boolean | — | false | |
size | 输入框尺寸 | String | large / medium / small / mini | medium | |
show-counter | 是否显示计数(当且仅当showCounter为true, 同时设置了maxlength时有效) | Boolean | — | false | |
suffix-icon | 输入框尾部图标, 值为通用字体图标的className | String | — | — | |
type | 类型 | String | text / textarea / password 等其他原生type可选值 | text |
Input-Suggestion Attributes
参数 | 说明 | 类型 | 可选值 | 默认值 | Version |
---|---|---|---|---|---|
autocompelete | 是否使用浏览器的记忆功能自动填充文本 | String | — | on / off | |
clearable | 是否可以被清空 | Boolean | — | false | |
disabled | 禁用输入框 | Boolean | — | false | |
empty-placeholder | 下拉无数据占位文本 | String | — | — | |
fetch-suggestion-list | 返回推荐列表的方法, 使用cb([])来返回 | Function | — | (query, cb) | |
is-center | 文字是否居中对齐(默认为左对齐) | Boolean | — | false | |
is-focus-trigger | 是否为聚焦展开下拉 | Boolean | — | true | |
maxlength | 最大输入长度 | Number | — | — | |
minlength | 最小输入长度 | Number | — | — | |
min-popper-height | 最小下拉面板高度 | String | 75px | — | v1.7.16 |
placeholder | 输入框占位文本 | String | — | — | |
prefix-icon | 输入框首部图标, 值为通用字体图标的className | String | — | — | |
popper-class | 为下拉列表添加class | String | — | — | |
readonly | 是否只读 | Boolean | — | — | |
size | 输入框尺寸 | String | large / medium / small / mini | medium | |
suffix-icon | 输入框尾部图标, 值为通用字体图标的className | String | — | — | |
value-key | 被选中项的属性名, 用于填充input | String | — | value |
Input Methods
参数 | 说明 | 回调参数 | Version |
---|---|---|---|
blur | 使 input 获取焦点 | — | |
focus | 使 input 失去焦点 | — |
Input Events
参数 | 说明 | 回调参数 | Version |
---|---|---|---|
blur | input失去焦点时触发 | — | |
change | input失去焦点或在focus状态按下回车键时触发 | — | |
clear | 点击清除按钮清空input值时触发 | — | |
focus | input取得焦点时触发 | — | |
input | 输入发生变化时即刻触发 | — | |
sufAppendClick | 尾部按钮被点击时触发(仅在复合输入框, 且sufAppendIsButton = true时生效) | — |
Input-suggestion Events
参数 | 说明 | 回调参数 | Version |
---|---|---|---|
clear | 点击清除按钮清空input值时触发 | — | |
select | 点选下拉某一项时触发 | 当前选中的项 |
贡献者
类型 | 参与者 |
---|---|
设计者 | UED视觉组 |
维护者 | UED前端组 |