vue3-ElementPlus-ts:表单运用含表格规则校验
1、html部分
<template>
<div>
<el-form ref="formRef" label-width="100px" :model="state.dialogForm" :rules="rules">
<el-form-item prop="oldPassword" label="旧密码">
<el-input v-model="state.dialogForm.oldPassword" size="large" type="password" clearable />
</el-form-item>
<el-form-item prop="password" label="新密码">
<el-input v-model="state.dialogForm.password" size="large" type="password" clearable />
</el-form-item>
<el-form-item prop="checkPassword" label="确认密码">
<el-input v-model="state.dialogForm.checkPassword" size="large" type="password" clearable />
</el-form-item>
<el-form-item>
<div>密码为6-18字母和数字组合</div>
</el-form-item>
</el-form>
<el-form-item>
<el-button @click="close(formRef)">取消</el-button>
<el-button type="primary" :loading="loading" @click="onSubmit(formRef)">确认</el-button>
</el-form-item>
</div>
</template>
2、ts部分
<script setup lang="ts">
import { reactive, ref, onMounted } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'
const formRef = ref<FormInstance>(); // form表单dom
// 检验确认密码框
const validateCheckPassword = (rule, value, callback) => {
if (value === "") {
callback(new Error("确认密码不能为空"));
} else if (state.dialogForm.password !== value && state.dialogForm.password !== '') {
callback(new Error("两次密码不一致!"));
} else {
callback();
}
}
// 检验新密码框
const validatePassword = (rule, value, callback) => {
var pwdRegex = new RegExp(/^(?![0-9] $)(?![a-zA-Z] $)[0-9A-Za-z]{6,18}$/);
if (value === "") {
callback(new Error("新密码不能为空"));
} else if (!pwdRegex.test(value)) {
callback(new Error("密码必须为6-18位字母和数字组合"));
} else if (state.dialogForm.oldPassword === value && state.dialogForm.oldPassword !== '') {
callback(new Error("新密码不能与旧密码相同"));
}else {
callback();
}
}
const rules = reactive<FormRules>({
oldPassword: [
{ required: true, message: '旧密码不能为空', trigger: 'blur' },
],
password: [
{ required: true, validator: validatePassword, trigger: 'blur' },
],
checkPassword: [
{ required: true, validator: validateCheckPassword, trigger: 'blur' },
],
})
const state = reactive({
dialogForm: { // 忘记密码表单
oldPassword: '', // 旧密码
password: '', // 新密码
checkPassword: '' // 确认密码
},
});
onMounted(() => {
})
/** 取消按钮 */
const close = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.resetFields() // 清除校验
}
/** 确认按钮 */
const onSubmit = async (formEl: FormInstance | undefined) => {
loading.value = true;
if (!formEl) return
await formEl.validate((valid, fields) => {
if (valid) {
state.dialogVisible = false // 关闭弹窗
} else {
return fields;
}
})
}
</script>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggafi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13