说明:为实现输入限制,不可输入空格,长度限制。
inputView.vue
<template>
<!-- 输入框 -->
<el-input
:type="type"
:placeholder="placeholder"
v-model="input"
@input="inputChange"
:maxlength="maxlength"
></el-input>
</template>
<script>
export default {
props: {
type: {
type: String,
default: "text",
},
value: {
type: [String, Number],
default() {
return "";
},
},
maxlength: {
type: Number,
default: 30,
},
placeholder: {
type: String,
default: "",
},
},
watch: {
value: {
handler(val) {
this.input = val;
},
deep: true,
},
},
data() {
return {
input: this.value,
};
},
methods: {
inputChange(value) {
this.input = value?.replace(/\s/g, "");
if (this.type === "num") {
// 做数字型的判断,因为采用input 的 Number 类型,最大值还得做单独匹配,偷懒,所以用了num代替
this.input = Number(value?.replace(/\D/g, ""));
}
this.$emit("input", this.input);
},
},
};
</script>
全局注册
components/index.js
main.js 中引入
import Components from '@/components'
Vue.use(Components)
组件中使用
<inputView
v-model="propertyForm.count"
style="width: 80px; margin: 0 10px"
type="num"
:maxlength="5"
></inputView>
<inputView
v-model="formInline.riskName"
placeholder="请输入"
></inputView>