一、基本介绍
Vue3 Input是一个基于Vue3的多功能输入框组件,可以支持多种输入类型和自定义功能,如输入校验、下拉选项、联想输入等等。由于使用了Vue3的Composition API,使用起来方便简单,同时还提供了非常友好的交互体验和自定义功能接口。
二、常用属性
Vue3 Input提供了以下常用属性:
<template>
<Vue3Input
v-model="inputValue"
placeholder="请输入内容"
:disabled="isDisabled"
:readonly="isReadonly"
:maxlength="maxLen"
:showClear="showClearBtn"
:showPwd="showPassword"
:inputType="inputType"
:options="selectOptions"
@input="handleInput"
@blur="handleBlur"
@focus="handleFocus"
@change="handleChange"
/>
</template>
<script>
import { ref } from 'vue';
import Vue3Input from './Vue3Input.vue';
export default {
components: { Vue3Input },
setup() {
const inputValue = ref('');
const isDisabled = ref(false);
const isReadonly = ref(false);
const maxLen = ref(100);
const showClearBtn = ref(false);
const showPassword = ref(false);
const inputType = ref('text');
const selectOptions = ref([]);
const handleInput = (value) => {
console.log(value);
};
const handleBlur = () => {
console.log('blur');
};
const handleFocus = () => {
console.log('focus');
};
const handleChange = () => {
console.log('change');
};
return {
inputValue,
isDisabled,
isReadonly,
maxLen,
showClearBtn,
showPassword,
inputType,
selectOptions,
handleInput,
handleBlur,
handleFocus,
handleChange,
};
},
};
</script>
1. v-model
用于绑定输入框的值,一般应该与数据源中的变量双向绑定来实现数据更新。
2. placeholder
输入框的默认文本提示语,当输入框无内容时会显示该提示文本。
3. disabled
是否禁用输入框,当值为true时无法输入内容,同时会应用一定的样式提示用户无法进行输入。
4. readonly
是否只读,当值为true时无法编辑,但可以进行选取、复制等操作,同时会应用一定的样式提示用户只能进行阅读。
5. maxlength
输入框的最大长度,超过该长度的输入将会被截取。
6. showClearBtn
是否显示清空按钮,用于一键清除输入框中的内容。
7. showPassword
是否显示密码,用于输入密码等保密内容,将把输入内容显示为星号或点号等符号。
8. inputType
输入框的类型,支持文本、数字、电话等多种类型,还可以自定义设置,根据类型来进行校验和渲染不同的键盘。
9. options
下拉选项,用于提供选择列表,用户可以从列表中选择一个值填充到输入框中。
三、事件说明
Vue3 Input提供了以下常用事件:
<template>
<Vue3Input
...
@input="handleInput"
@blur="handleBlur"
@focus="handleFocus"
@change="handleChange"
/>
</template>
<script>
export default {
methods: {
handleInput(value) {
console.log(value);
},
handleBlur() {
console.log('blur');
},
handleFocus() {
console.log('focus');
},
handleChange() {
console.log('change');
},
},
};
</script>
1. input
当用户输入字符时触发,用于更新输入框的值。
2. blur
当输入框失去焦点时触发,用于保存用户输入的内容,同时可能进行校验等操作。
3. focus
当输入框获得焦点时触发,用于提示用户当前正在输入该输入框。
4. change
当输入框的值发生变化时触发,与<input>
事件不同的是,只有在焦点离开输入框之后才会触发。
四、自定义输入校验
为了方便用户输入,Vue3 Input提供了很多自带的校验规则,如数字、邮箱、电话等,可以非常方便地进行设置。同时,也支持自定义校验规则,以满足不同业务场景的需求。
1. 内置校验规则举例:
<template>
<Vue3Input
...
v-model="inputValue"
:inputType="inputType"
:validator="phoneValidator"
/>
</template>
<script>
export default {
setup() {
const inputValue = ref('');
const inputType = ref('tel');
const phoneValidator = (val) => {
const reg = /^1[34578]\d{9}$/;
if (!reg.test(val)) {
return '请输入正确的手机号码';
}
return true;
};
return {
inputValue,
inputType,
phoneValidator,
};
},
};
</script>
2. 自定义校验规则:
<template>
<Vue3Input
...
v-model="inputValue"
:validator="customValidator"
/>
</template>
<script>
export default {
setup() {
const inputValue = ref('');
const customValidator = (val) => {
if (val.trim() === '') {
return '内容不能为空';
} else if (val.length < 4) {
return '内容长度不能小于4';
} else {
return true;
}
};
return {
inputValue,
customValidator,
};
},
};
</script>
五、自定义下拉列表选项
为了提供更加友好的用户输入体验,Vue3 Input提供了下拉选项的功能,可以在输入框下方展示一组选项供用户选择。同时,也支持自定义选项,以满足不同的业务需求。
1. 内置下拉选项举例:
<template>
<Vue3Input
...
:options="selectOptions"
/>
</template>
<script>
export default {
setup() {
const selectOptions = [
'选项1',
'选项2',
'选项3',
...
];
return {
selectOptions,
};
},
};
</script>
2. 自定义下拉选项:
<template>
<Vue3Input
...
:options="customOptions"
/>
</template>
<script>
export default {
setup() {
const customOptions = [
{
label: '选项1',
value: 1,
},
{
label: '选项2',
value: 2,
},
{
label: '选项3',
value: 3,
},
...
];
return {
customOptions,
};
},
};
</script>
六、结束语
Vue3 Input是一个多功能的输入框组件,提供了非常丰富的功能和事件,并且通过自定义校验规则和下拉列表选项,可以满足各种不同业务场景的需求。希望本文能为大家带来一些参考和帮助,同时也希望大家在使用Vue3 Input的过程中,能够发挥出自己的智慧和灵感,创造出更加美好的应用体验。