validator
是一个函数, 其中有三个参数 ( rule(当前规则),
value(当前值),
callback(回调函数))
var func = function (rule, value, callback) {
// 根据value进行进行校验
// 如果一切ok
// 直接执行callback
callback() // 一切ok 请继续
// 如果不ok
callback(new Error("错误信息"))
}
<div class='login'>
<!-- 使用elementUI组件 el-card -->
<el-card class="login-card">
<!-- 匿名插槽 -->
<div class='title'>
<img src="../../assets/img/logo_index.png" alt="">
</div>
<!-- 表单 => el-form包裹 -->
<!-- 数据校验 => el-form绑定 model ,绑定rules规则 -->
<el-form ref="myForm" :model="loginForm" :rules="loginRules" style="margin-top:20px">
<!-- 每一个表单域由一个 Form-Item 组件构成 -->
<!-- form-item prop属性 绑定 下面表单组件的 字段名 -->
<el-form-item prop="mobile">
<!-- 表单域中可以放置各种类型的表单控件,包括 Input、Select、Checkbox、Radio、Switch、DatePicker、TimePicker -->
<!-- 手机号 绑定 v-model -->
<el-input v-model="loginForm.mobile" placeholder="请输入手机号"></el-input>
</el-form-item>
<el-form-item prop="code">
<!-- 验证码 -->
<el-input v-model="loginForm.code" placeholder="请输入验证码" style="width:65%"></el-input>
<!-- 发送验证码 -->
<el-button style="float:right">发送验证码</el-button>
</el-form-item>
<el-form-item prop="agree">
<!-- 同意选项 -->
<el-checkbox v-model="loginForm.agree">我已阅读并同意用户协议和隐私条款</el-checkbox>
</el-form-item>
<el-form-item>
<!-- 登录按钮 -->
<!-- 注册点击事件 -->
<el-button @click="login" type="primary" style="width:100%">登录</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
export default {
data () {
let validator = function (rule, value, callBack) {
// rule当前规则
// value当前表单项的值
// callback 回调函数
// 正常写法
// if (value) {
// // 正确 勾选了协议
// callBack() // 一切OK请继续
// } else {
// // 不对 没勾选协议
// callBack(new Error('您必须同意无条件被我们蒙骗'))
// }
value ? callBack() : callBack(new Error('您必须同意无条件被我们蒙骗')) // 炫技模式
}
return {
// 表单数据 是一个对象
loginForm: {
mobile: '', // 手机号
code: '', // 验证码
agree: false // 是否同意协议
},
loginRules: {
// 决定着校验规则 key(字段名):value(对象数组) => 一个对象就是一个校验规则
// required 为true 就表示该字段必填 如果不填 就会提示消息
mobile: [{ required: true, message: '请输入您的手机号' },
{ pattern: /^1[3456789]\d{9}$/, message: '请输入合法的手机号' }],
code: [{ required: true, message: '请输入您的验证码' },
{ pattern: /^\d{6}$/, message: '验证码为6位数字' }],
agree: [{ validator }]
} // 登录规则集合对象
// 自定义形式去校验
}
},
methods: {
login () {
// 校验整个表单的规则
// validate 是一个方法 => 方法中传入的一个函数 两个校验参数 是否校验成功/未校验成功的字段
this.$refs.myForm.validate(function (isOK) {
if (isOK) {
console.log('校验成功')
}
})
}
}
}
网友评论