Input表单
引入
在app.json或index.json中引入组件,默认为ES6版本注意:在开发工具中可能存在无法输入的情况,但是在真机中是正常的,不影响使用。
"usingComponents": {
"vtu-input": "/miniprogram_npm/vtuweapp/input/item/vtu-input",
"vtu-input-group": "/miniprogram_npm/vtuweapp/input/group/vtu-input-group"
}
代码演示
普通表单
<vtu-input-group title="普通表单">
<vtu-input title="姓名" border placeholder="请输入姓名" type="input" text-align="left"></vtu-input>
<vtu-input title="电话" border placeholder="请输入电话" message="请输入正确的电话号码" status="error" value="48568" type="input" text-align="left" input-type="number"></vtu-input>
<vtu-input title="密码" must border placeholder="请输入密码" value="" type="input" text-align="left" input-type="password"></vtu-input>
<vtu-input title="身份证" must border placeholder="请输入身份证" value="" type="input" text-align="left" input-type="idcard"></vtu-input>
<vtu-input title="小数" border placeholder="请输入小数" value="" type="input" text-align="left" input-type="digit"></vtu-input>
<vtu-input title="价格" placeholder="请输入价格" value="" disabled type="input" text-align="left" input-type="digit">
<view slot="after">元</view>
</vtu-input>
</vtu-input-group>
自动换行
<vtu-input-group title="自动换行">
<vtu-input title="个人简介" border placeholder="请输入个人简介" value="" type="textarea" auto-height="{{true}}" text-align="left"></vtu-input>
<vtu-input title="最大输入" border placeholder="请输入内容" value="" type="textarea" text-align="left" text-height="100px" show-max-label="{{true}}" maxlength="300"></vtu-input>
</vtu-input-group>
高级用法
<vtu-input-group title="表单">
<vtu-input title="开关" icon="iconfont icon-kefu" icon-color="#1989fa" border>
<vtu-switch slot="after" checked="{{true}}" size="small" bind:change="bindchange"></vtu-switch>
</vtu-input>
<vtu-input title="普通选项" icon="iconfont icon-kefu" icon-color="#1989fa" border value="{{pickerIndex}}" range="{{pickerArray1}}" range-key="label" type="picker" bindchange="pickerChange" arrow></vtu-input>
<vtu-input title="日期" placeholder="选择日期" icon="iconfont icon-kefu" border icon-color="#1989fa" border value="{{pickerDate}}" type="picker" mode="date" bindchange="pickerDateChange" arrow></vtu-input>
<vtu-input title="时间" placeholder="选择时间" icon="iconfont icon-kefu" start="09:00" icon-color="#f5bf49" border value="{{pickerTime}}" type="picker" mode="time" bindchange="pickerTimeChange" arrow></vtu-input>
<vtu-input title="地址" placeholder="选择地址" icon="iconfont icon-kefu" border icon-color="#f5bf49" border value="{{pickerRegion}}" type="picker" mode="region" bindchange="pickerRegionChange" arrow></vtu-input>
<vtu-input title="短信验证码" border icon="iconfont icon-kefu" icon-color="#f5bf49" text-align="left" placeholder="请输入短信验证码" value="" type="input" input-type="number">
<vtu-btn slot="after" my-class="phoneNumberBtn" type="primary" size="small">发送验证码</vtu-btn>
</vtu-input>
<vtu-input title="计数器" icon="iconfont icon-kefu" icon-color="#f5bf49" border text-align="right" placeholder="请输入数量">
<vtu-stepper slot="after" my-class="stepNumberBtn" size="small" value="3"></vtu-stepper>
</vtu-input>
<vtu-input title="评分" border icon="iconfont icon-kefu" icon-color="#f5bf49">
<vtu-rate slot="after" my-class="rateBtn" value="3"></vtu-rate>
</vtu-input>
<vtu-input title="选择城市" icon="iconfont icon-kefu" arrow border icon-color="#f5bf49" value="{{radioVal}}" bind:click="showRadioEvent"></vtu-input>
</vtu-input-group>
<vtu-radio-prop show="{{showRadioProp}}"
model="{{radioVal}}"
align="right"
active-color="red"
radio-icon="iconfont icon-xuanze"
active-radio-icon="iconfont icon-xuanze-danxuan"
bind:change="radioChange">
<vtu-radio-prop-item value="{{1}}" label="北京" icon="iconfont icon-biaoxing" ></vtu-radio-prop-item>
<vtu-radio-prop-item value="{{2}}" label="上海" icon="iconfont icon-xihuan" ></vtu-radio-prop-item>
<vtu-radio-prop-item value="{{3}}" label="深圳" icon="iconfont icon-sousuo"></vtu-radio-prop-item>
<vtu-radio-prop-item value="{{4}}" label="南京" icon="iconfont icon-shangchuan"></vtu-radio-prop-item>
</vtu-radio-prop>
.js文件
Page({
data: {
input: null,
switch: true,
pickerIndex: 0,
pickerArray1: [{type: 1, label: '选项一'}, {type: 2, label: '选项二'}, {type: 3, label: '选项三'}],
pickerTime: null,
pickerRegion: [],
pickerDate: null,
radioVal: 1,
showRadioProp: false
},
pickerChange: function(e) {
this.setData({
pickerIndex: parseInt(e.detail.value)
})
},
pickerDateChange: function(e) {
this.setData({
pickerDate: e.detail.value
})
},
pickerTimeChange: function(e) {
this.setData({
pickerTime: e.detail.value
})
},
pickerRegionChange: function(e) {
this.setData({
pickerRegion: e.detail.value
})
},
showRadioEvent: function() {
this.setData({
showRadioProp: true
})
},
radioChange: function(e){
this.setData({
radioVal: e.detail.value
})
}
});
.json文件
{
"usingComponents": {
"vtu-btn": "/miniprogram_npm/vtuweapp/button/vtu-btn",
"vtu-rate": "/miniprogram_npm/vtuweapp/rate/vtu-rate",
"vtu-navbar": "/miniprogram_npm/vtuweapp/navbar/vtu-navbar",
"vtu-switch": "/miniprogram_npm/vtuweapp/switch/vtu-switch",
"vtu-input": "/miniprogram_npm/vtuweapp/input/item/vtu-input",
"vtu-input-group": "/miniprogram_npm/vtuweapp/input/group/vtu-input-group",
"vtu-radio-prop": "/miniprogram_npm/vtuweapp/prop/radio/prop/vtu-radio-prop",
"vtu-radio-prop-item": "/miniprogram_npm/vtuweapp/prop/radio/item/vtu-radio-prop-item"
}
}
组件参数
Props
参数 | 说明 | 类型 | 默认值 | 必填 |
---|
title | 标题 | String | - | 否 |
title-color | 标题颜色 | String | - | 否 |
icon | 图标 | String | - | 否 |
icon-color | 图标颜色 | String | - | 否 |
value | 输入框的初始内容/显示内容 | String | Number | - | 否 |
value-color | 内容颜色 | String | - | 否 |
type | 类型default input textarea inputNumber switch picker | String | default | 否 |
arrow | 是否显示右部箭头 | Boolean | false | 否 |
input-type | 文本框类型,具体参考微信开发文档 | String | text | 否 |
placeholder | 文本框占位符 | String | - | 否 |
text-align | 文本框内容位置left center right | String | right | 否 |
content | 详细描述 | String | - | 否 |
border | 是否显示底部边框 | Boolean | false | 否 |
confirm-type | 设置键盘右下角按钮的文字,仅在type='text'时生效,具体参考微信开发文档 | String | - | 否 |
confirm-hold | 点击键盘右下角按钮时是否保持键盘不收起 | Boolean | false | 否 |
maxlength | 最大输入长度 | Number | 0 | 否 |
disabled | 是否禁用 | Boolean | false | 否 |
adjust-position | 键盘弹起时,是否自动上推页面 | Boolean | false | 否 |
focus | 获取焦点 | Boolean | false | 否 |
cursorSpacing | 指定光标与键盘的距离,取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 | Number | 0 | 否 |
mode | 选择器类型,仅在type='picker'时生效,具体参考微信开发文档 | String | selector | 否 |
range | mode 为 selector 或 multiSelector 时,range 有效 | Array | - | 否 |
range-key | 当 range 是一个 Object Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容 | String | - | 否 |
start | 表示有效时间范围的开始,字符串格式为"hh:mm",mode 为time时有有效 | String | - | 否 |
end | 表示有效时间范围的结束,字符串格式为"hh:mm",mode 为time时有有效 | String | - | 否 |
auto-height | 是否自动增高,设置auto-height时,style.height不生效,仅在type=‘textarea’时生效 | Boolean | false | 否 |
titleAlign | 标题位置left center right | String | left | 否 |
show-confirm-bar | 是否显示键盘上方带有”完成“按钮那一栏,仅在type=‘textarea’时生效 | Boolean | true | 否 |
must | 是否为必填项 | Boolean | false | 否 |
text-height | textarea文本域高度,仅在type=‘textarea’时生效 | String | - | 否 |
showMaxLabel | 是否显示textarea可输入最大值提示,仅在type=‘textarea’时生效 | Boolean | true | 否 |
status | 状态提示,success warning error | String | - | 否 |
message | 提示信息 | String | - | 否 |
clearable | 是否可清空 | Boolean | true | 否 |
Events
事件 | 说明 | 返回值 |
---|
bind:input | 键盘输入时触发 | event.detail = {value, cursor, keyCode},keyCode 为键值,2.1.0 起支持,处理函数可以直接 return 一个字符串,将替换输入框的内容。 |
bind:confirm | 点击完成按钮时触发 | event.detail = {value: value} |
bind:focus | 输入框聚焦时触发 | event.detail = { value, height },height 为键盘高度 |
bind:blur | 输入框失去焦点时触发 | event.detail = {value: value} |
bind:clear | 输入框内容清空时触发 | - |
bind:change | value 改变时触发 change 事件 | event.detail = {value} |
bind:columnchange | 列改变时触发 | - |
bind:linechange | 输入框行数变化时调用 | event.detail = {height: 0, heightRpx: 0, lineCount: 0} |
bind:keyboardheightchange | 键盘高度发生变化的时候触发此事件 | event.detail = {height: height, duration: duration} |
bind:click | 点击事件 | - |
外部样式类
外部样式类名 | 说明 |
---|
v-class | 组件外部样式类 |