一、表单验证,常见类型
Type
Indicates the type
of validator to use. Recognised type values are:
-
string
: Must be of type string
. This is the default type.
-
number
: Must be of type number
. -
boolean
: Must be of type boolean
. -
method
: Must be of type function
. -
regexp
: Must be an instance of RegExp
or a string that does not generate an exception when creating a new RegExp
. -
integer
: Must be of type number
and an integer. -
float
: Must be of type number
and a floating point number. -
array
: Must be an array as determined by Array.isArray
. -
object
: Must be of type object
and not Array.isArray
. -
enum
: Value must exist in the enum
. -
date
: Value must be valid as determined by Date
-
url
: Must be of type url
. -
hex
: Must be of type hex
. -
email
: Must be of type email
.
二、自定义验证规则、异步验证
验证使用:rules 定义js验证处理,或者单独指定某一项的:rules配置处理。
<template>
<div>
<el-form :model="ruleForm2" status-icon :rules="rules2" ref="ruleForm2" label-width="100px">
<el-form-item label="用户名" prop="username">
<el-input type="text" v-model="ruleForm2.username" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item label="密码" prop="pass">
<el-input type="password" v-model="ruleForm2.pass"></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="checkPass">
<el-input type="password" v-model="ruleForm2.checkPass"></el-input>
</el-form-item>
<el-form-item
label="年龄"
prop="age"
:rules="[
{required:true,message:'年龄不能空'},
{type:'number',message:'请输入数字',trigger:'blur'}
]"
>
<el-input type="age" v-model.number="ruleForm2.age"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm2')">提交</el-button>
<el-button @click="resetForm('ruleForm2')">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
js示例代码:
export default {
data() {
//定义验证规则
var checkUserName = (rule, value, callback) => {
if (!value) {
return callback(new Error("用户不能空"));
}
//延迟验证
// setTimeout(() => {
// if (!Number.isInteger(value)) {
// callback(new Error("不能纯数字"));
// } else {
// callback();
// }
// }, 1000);
//异步验证
$.get(
"http://api.gongjuji.net/download/addrecord?type=1&content=uploader6.0%E6%BA%90%E7%A0%81%E4%B8%8B%E8%BD%BD",
function(data) {
console.info(data);
if (!data) {
callback("用户名不正确");
} else {
callback();
}
}
);
};
//验证码确认验证码处理
var validatePass = (rule, value, callback) => {
if (value === "") {
callback(new Error("请输入密码"));
} else {
if (this.ruleForm2.checkPass !== "") {
this.$refs.ruleForm2.validateField("checkPass");
}
callback();
}
};
var validatePass2 = (rule, value, callback) => {
if (value === "") {
callback(new Error("请再次输入密码"));
} else if (value !== this.ruleForm2.pass) {
callback(new Error("两次输入密码不一致!"));
} else {
callback();
}
};
return {
ruleForm2: {},
rules2: {
username: [
{ required: true, validator: checkUserName, trigger: "blur" }
],
pass: [{ required: true, validator: validatePass,trigger:'blur' }],
checkPass: [{ required: true, validator: validatePass2 }]
}
};
},
methods: {
//提交验证
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
alert(JSON.stringify(this.ruleForm2));
} else {
return false;
}
});
},
//重置表单
resetForm(formName) {
this.$refs[formName].resetFileds();
}
}
};