假设已有如下数据
const data = {evaluationType:'', techScoreType:'', openBidType: '', email: '', }
项目要求是校验上述字段是否为空,及部分字段的长度等,及Email的合法性等
<script>
function handleSubmit() {
const data = {
evaluationType: '',
techScoreType: '',
openBidType: '',
email: '',
}
const isLowprice = data.evaluationType === 'lowprice';
const validator = {
evaluationType: [{
required: true,
message: '请选择评标方式',
}, ],
techScoreType: [{
required: !isLowprice,
message: '请选择技术评分方式',
}],
openBidType: [{
required: !isLowprice,
message: '请选择开标方式',
}, {
maxLength: 10,
message: '开标方式最多字符个数为:'
}, , {
minLength: 5,
message: '开标方式最少字符个数为:'
}],
email: [{
required: true,
message: '请输入Email地址',
}, {
regex: /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/,
message: '请输入合法的Email地址'
}],
}
let message = null;
const resultValidate = Object.entries(validator).some(item => {
const [key, arrValidate] = item;
return arrValidate.some(el => {
message = el.message;
if (el.required) {
return !data[key]
}
if (el.regex) {
return !el.regex.test(data.email)
}
if (el.maxLength) {
message = el.message + el.maxLength;
return data.openBidType.length > el.maxLength
}
if (el.minLength) {
message = el.message + el.minLength;
return data.openBidType.length < el.minLength
}
})
})
if (resultValidate) {
alert(message);
return;
}
}
</script>