在我们前端开发,会对手机号的表单验证,不同的产品有不同的使用场景,下面写一下我在开发中进行的表单验证吧。
要验证的点:
手机号码的格式要正确。
向后端发送请求验证手机号是否存在
去空格(我看antd里的input没有什么属性可以去空格,就只能再写一个函数了)
来看看
javascript
<template>
<a-form
ref="addUserModal"
:model="createParams"
:layout="'vertical'"
style="padding: 20px"
:rules="rules"
>
...
<a-form-item label="手机号码" name="phone">
<a-input
placeholder="请输入手机号码"
v-model:value="createParams.phone"
@blur="handleChange"
/>
</a-form-item>
</a-form>
</template>
javascript
<script>
const rules = {
password: [{ required: true, message: '请输入用户密码' }],
phone: [
{ required: true, message: '请输入手机号', trigger: 'blur' },
{ validator: checkPhoneExist, trigger: 'blur' },
],
.....
};
// 手机号码的正则表达式
const isPhoneValid = (phone: string) => {
const phoneRegex = /^1[3-9]\d{9}$/;
return phoneRegex.test(phone);
};
// 手机号重复监测
const checkPhoneExist = async (rule: Rule, value: string) => {
const phoneCheck = {
tableName: 'sys_user',
fieldName: 'phone',
fieldVal: value,
};
if (!isPhoneValid(value) && value !== undefined) {
throw new Error('手机号格式不正确');
}
if (value) {
try {
const res = await checkRepeat(phoneCheck);
if (res.code !== 200) {
throw new Error('手机号已存在');
}
} catch (error) {
throw new Error('手机号已存在');
}
}
};
// 去除空格
const handleChange = (e: any) => {
createParams.value['phone'] = e.target.value.trim();
};
</script>
如果你有什么更好的实现方法,可以交流怕哦。
本人是一个入行一年,还没有师傅带的小白,好多东西都是在实际开发中遇到了在学习,解决,如果有什么不足的话,欢迎各位大佬可以与我交流哦,或者你有什么更好的实现方法,有可以告诉我哦!让 我学习,进步一下