3 changed files with 201 additions and 9 deletions
@ -0,0 +1,149 @@ |
|||
<template> |
|||
<view class="input-com"> |
|||
<view :class="'input-wrapper'+(errormsg?' error':'')"> |
|||
<view class="left"> |
|||
<text :class="!required?'hide-start':''">*</text> |
|||
<view>{{label}}:</view> |
|||
</view> |
|||
<view class="right"> |
|||
<textarea v-if="autoHeight" :auto-height="true" :value="value" :placeholder="holder" @blur="handleBlur" @input="handleInput"></textarea> |
|||
<input v-else :value="value" :placeholder="holder" @blur="handleBlur" @input="handleInput"></input> |
|||
</view> |
|||
</view> |
|||
<view class="errmsg" v-if="errormsg">*{{errormsg}}</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: "inputBox", |
|||
props: { |
|||
value: { |
|||
type: String, |
|||
default: "" |
|||
}, |
|||
autoHeight: { |
|||
type: Boolean, |
|||
default: false |
|||
}, |
|||
label: { |
|||
type: String, |
|||
default: "" |
|||
}, |
|||
holder: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
rule: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
required: { |
|||
type: Boolean, |
|||
default: true |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
errormsg:'' |
|||
} |
|||
}, |
|||
methods: { |
|||
handleBlur(e) { |
|||
var value = e.detail.value |
|||
var res = this.check(value); |
|||
if(!res){ |
|||
this.$emit('blurEvent', '') |
|||
return |
|||
} |
|||
this.$emit('blurEvent', value) |
|||
}, |
|||
handleInput(e){ |
|||
if(!this.errormsg) return; |
|||
var value = e.detail.value |
|||
var res = this.check(value); |
|||
if(!res){ |
|||
this.$emit('blurEvent', '') |
|||
return |
|||
} |
|||
this.$emit('blurEvent', value) |
|||
}, |
|||
check(value){ |
|||
var noEmptyVal = this.$trim.trim(value) |
|||
if(this.required && noEmptyVal.length<=0){ |
|||
this.errormsg = this.label+'不能为空' |
|||
return false |
|||
} |
|||
|
|||
if(this.rule == 'phone' && !/^1[3-9]\d{9}$/.test(noEmptyVal)){ |
|||
this.errormsg = '手机号格式不正确' |
|||
return false |
|||
} |
|||
|
|||
if(this.rule == 'idcardext' && (!/[a-z0-9A-Z]{4}/.test(noEmptyVal) || noEmptyVal.length!=4)){ |
|||
this.errormsg = this.label+'格式不正确' |
|||
return false |
|||
} |
|||
|
|||
this.errormsg = '' |
|||
return true |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.input-com{ |
|||
.input-wrapper{ |
|||
display: flex; |
|||
width: 666rpx; |
|||
min-height: 100rpx; |
|||
background: #FFFFFF; |
|||
border-radius: 12rpx; |
|||
border: 2rpx solid #DDDDDD; |
|||
padding: 27.5rpx 14rpx; |
|||
box-sizing: border-box; |
|||
margin: 0 auto; |
|||
font-size: 32rpx; |
|||
letter-spacing: 1rpx; |
|||
&.error{ |
|||
border: 1rpx solid #FAB0B0; |
|||
} |
|||
.left{ |
|||
display: flex; |
|||
min-width: 133rpx; |
|||
max-width: 232rpx; |
|||
text{ |
|||
color: #F55555; |
|||
margin-right: 16rpx; |
|||
} |
|||
view{ |
|||
color: #949699; |
|||
} |
|||
.hide-start{ |
|||
opacity: 0; |
|||
} |
|||
} |
|||
|
|||
.right{ |
|||
flex-grow: 1; |
|||
color: #242833; |
|||
text-align: right; |
|||
padding-left: 10rpx; |
|||
box-sizing: border-box; |
|||
textarea{ |
|||
width: 100%; |
|||
height: 45rpx; |
|||
} |
|||
} |
|||
} |
|||
.errmsg{ |
|||
min-height: 25rpx; |
|||
line-height: 30rpx; |
|||
font-size: 30rpx; |
|||
color: #FD0000; |
|||
width: 666rpx; |
|||
margin: 16rpx auto 0rpx; |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue