wxc-input
输入框组件 - 小程序组件
Install
$ min install @minui/wxc-input
Demos
基础用法
<template>
<view class="container">
<view class="input-wrap">
<wxc-input type="text" title="收货人" placeholder="名字"></wxc-input>
<wxc-input type="number" title="联系电话" placeholder="请输入手机号"></wxc-input>
<wxc-input type="text" title="详细地址" mode="none" placeholder="请输入详细地址"></wxc-input>
</view>
</view>
</template>
<script>
export default {
config: {
usingComponents: {
'wxc-input': '@minui/wxc-input'
}
},
data: { },
methods: { }
}
</script>
<style>
.container {
width: 100%;
}
.input-wrap {
background: #fff;
}
</style>
带icon的输入框
<template>
<view class="input-wrap">
<wxc-input type="text"
icon="search"
placeholder="搜索从这里开始">
</wxc-input>
</view>
</template>
<script>
export default {
config: {
usingComponents: {
'wxc-input': '@minui/wxc-input'
}
},
data: { },
methods: { }
}
</script>
<style>
.input-wrap {
position: relative;
margin: 20rpx 10rpx 0 10rpx;
}
</style>
无标题输入框
<template>
<wxc-input type="text" placeholder="请输入收货人姓名"></wxc-input>
</template>
<script>
export default {
config: {
usingComponents: {
'wxc-input': '@minui/wxc-input'
}
},
data: { },
methods: { }
}
</script>
<style>
</style>
号码输入框,带校验
<template>
<view class="input-wrap">
<wxc-input type="number"
src="https://s10.mogucdn.com/mlcdn/c45406/171025_7abllhkc011ka5kici7532af6202g_28x40.png"
value="{{mobileNumber}}"
placeholder="请输入充值手机号码"
maxlength="11"
data-type="mobile"
bind:input="onInput"
bind:blur="onBlur">
</wxc-input>
<view class="tips">
<text wx:if="{{mobileTip}}" class="warn-tip">请输入正确的手机号码</text>
<view wx:if="{{mobileNumber && mobileNumber.length}}" class="clear-wrap" data-type="mobile" bindtap="clearInput">
<icon type="clear" size="14" color="#ccc"/>
</view>
</view>
</view>
<view class="input-wrap">
<wxc-input type="number"
src="https://s10.mogucdn.com/mlcdn/c45406/171024_4dk50g015la22946k786bi8je3j3d_60x60.png"
value="{{qqNumber}}"
placeholder="请输入充值QQ号码"
maxlength="11"
data-type="qq"
bind:input="onInput"
bind:blur="onBlur">
</wxc-input>
<view class="tips">
<text wx:if="{{qqTip}}" class="warn-tip">请输入正确的QQ号码</text>
<view wx:if="{{qqNumber && qqNumber.length}}" class="clear-wrap" data-type="qq" bindtap="clearInput">
<icon type="clear" size="14" color="#ccc"/>
</view>
</view>
</view>
</template>
<script>
export default {
config: {
usingComponents: {
'wxc-input': '@minui/wxc-input'
}
},
data: {
mobileNumber: '12655324',
qqNumber: '01223',
mobileTip: true,
qqTip: true
},
/** note: 在 wxp 文件或者页面文件中请去掉 methods 包装 */
methods: {
onInput(e) {
let type = e.target.dataset.type;
let number = e.detail.value;
this.setData({
[type + 'Number']: number
});
this.validate(number, type);
},
onBlur(e) {
let type = e.target.dataset.type;
let number = e.detail.value;
this.validate(number, type);
},
clearInput(e) {
let type = e.currentTarget.dataset.type;
this.setData({
[type + 'Number']: "",
[type + 'Tip']: false
});
},
validate(number, type) {
if (type === "mobile") {
this.validateTelephone(number);
}
if (type === "qq") {
this.validateQQ(number);
}
},
validateTelephone(number) {
let regPhone = /^1(3|4|5|7|8)\d{9}$/;
let tip = false;
if (!regPhone.test(number) && number.length > 0) {
// 输入7位以上开始校验手机号码
tip = true;
}
this.setData({
mobileTip: tip
});
},
validateQQ(number) {
let tip = false;
let regQQ = /^[1-9]\d{4,10}$/;
if (!regQQ.test(number) && number.length > 0) {
// 输入4位以上开始qq号码
tip = true;
}
this.setData({
qqTip: tip
});
}
}
}
</script>
<style>
.input-wrap {
position: relative;
margin: 20rpx 10rpx 0 10rpx;
}
.tips {
display: flex;
position: absolute;
top: 50%;
right: 0;
font-size: 0;
transform: translate(0, -50%);
-webkit-transform: -webkit-translate(0, -50%);
z-index: 100;
}
.clear-wrap {
display: flex;
width: 40rpx;
height:104rpx;
align-items:center;
justify-content: flex-end;
}
.warn-tip {
line-height: 104rpx;
font-size: 28rpx;
color: #ff5777;
}
</style>
圆角输入框
<template>
<view class="input-wrap">
<wxc-input type="number" mode="wrapped" right="{{true}}" title="消费总额" placeholder="询问收银员后输入"></wxc-input>
</view>
<view class="input-wrap">
<wxc-input type="number" mode="wrapped" right="{{true}}" error="{{true}}" title="不参与优惠金额" placeholder="询问收银员后输入"></wxc-input>
</view>
<view class="input-wrap">
<wxc-input type="number" mode="wrapped" placeholder="请输入消费金额"></wxc-input>
</view>
</template>
<script>
export default {
config: {
usingComponents: {
'wxc-input': '@minui/wxc-input'
}
},
data: { },
methods: { }
}
</script>
<style>
.input-wrap {
position: relative;
margin: 20rpx 10rpx 0 10rpx;
}
</style>
API
Input
名称 | 描述 |
---|---|
title | [说明]:输入框前面的标题。若 src 或 icon 同时指定,title 的优先级最高,src 次之,icon 最低。[类型]:String [默认值]:"" |
src | [说明]:输入框前面的图标,自定义图片链接。[类型]:String [默认值]:"" |
icon | [说明]:输入框前面的图标,类型见 wxc-icon 组件。[类型]:String [默认值]:"" |
icon-color | [说明]:输入框前面的图标颜色,与 icon 一同使用。[类型]:String [默认值]:"" |
mode | [说明]:输入框边框模式。[类型]:String [可选值]:wrapped ,有边框包裹;normal ,只有下边框;none ,无边框。[默认值]:normal |
right | [说明]:输入框文本是否向右对齐。[类型]:Boolean [默认值]:false |
error | [说明]:是否显示为输入框错误情况下的样式。[类型]:Boolean [默认值]:false |
value | [说明]:输入框的内容。[类型]:String [默认值]:"" |
type | [说明]:input 的类型。[类型]:String [可选值]:text, number, idcard, digit [默认值]:"text" |
password | [说明]:是否是密码类型。[类型]:Boolean [默认值]:false |
placeholder | [说明]:输入框为空时占位符。[类型]:String [默认值]:"" |
placeholder-style | [说明]:指定 placeholder 的样式。[类型]:String [默认值]:"" |
disabled | [说明]:是否禁用。[类型]:Boolean [默认值]:false |
maxlength | [说明]:最大输入长度,设置为 -1 的时候不限制最大长度。[类型]:Number [默认值]:140 |
cursor-spacing | [说明]:指定光标与键盘的距离,单位 px。[类型]:Number [默认值]:0 |
focus | [说明]:获取焦点。[类型]:Boolean [默认值]:false |
confirm-type | [说明]:设置键盘右下角按钮的文字。[类型]:String [可选值]:send, search, next, go, done [默认值]:done |
confirm-hold | [说明]:点击键盘右下角按钮时是否保持键盘不收起。[类型]:Boolean [默认值]:false |
cursor | [说明]:指定focus时的光标位置。[类型]:Number [默认值]:0 |
selection-start | [说明]:光标起始位置,自动聚集时有效,需与selection-end搭配使用。[类型]:Number [默认值]:-1 |
selection-end | [说明]:光标结束位置,自动聚集时有效,需与selection-start搭配使用。[类型]:Number [默认值]:-1 |
adjust-position | [说明]:键盘弹起时,是否自动上推页面。[类型]:Boolean [默认值]:true |
bind:input | [说明]:当键盘输入时,触发input事件,event.detail = {value, cursor},处理函数可以直接 return 一个字符串,将替换输入框的内容。 |
bind:focus | [说明]:输入框聚焦时触发,event.detail = { value, height },height 参数在基础库 1.9.90 起支持 |
bind:blur | [说明]:输入框失去焦点时触发,event.detail = {value: value} |
bind:confirm | [说明]:点击完成按钮时触发,event.detail = {value: value} |
Note
小程序组件系统中组件是隔离的,所以提交表单时无法用
form
表单获取输入框中的值,只能单独获取。
ChangeLog
v1.0.0(2018-3-29)
- 初始版本