小编给大家分享一下element vue validate验证名称重复的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
具体代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" rel="external nofollow" >
</head>
<body >
<div id="app">
<!--此处model的abc 要是下面input 绑定的对象名称, ref 要和提交按钮的submit参数 名称要一致-->
<el-form size="mini" :model="abc" ref="validateRef">
<!--此处的prop 和input 中abc的属性名称一致 -->
<el-form-item label="你好" prop="hello" :rules="[{required: true,message:'请输入',trigger:'blur'}
,{validator:validateCharacter,trigger:'blur'}
,{validator:validateFontSize,trigger:'blur'}
,{validator:validatePass,trigger:'blur'}]">
<el-input type="text" v-model="abc.hello" placeholder="请输入..." clearable></el-input>
</el-form-item>
</el-form>
<el-button @click="submit('validateRef')" type="primary" :loading="submitLoading">提交</el-button>
</div>
<!-- import Vue before Element -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<!-- import JavaScript -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
var context=[[${#request.getContextPath()}]];
var ArrayMap = new Vue({
el: '#app',
data: function () {
return {
abc: {
hello: '',
},
submitLoading:false,
}
},
methods: {
//特殊字符过滤
checkSpecificKey(str) {
var specialKey = "[`~!#$^&*()=|{}':;',\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]‘'";
for (var i = 0; i < str.length; i++) {
if (specialKey.indexOf(str.substr(i, 1)) != -1) {
return false;
}
}
return true;
},
//验证字符串
validatePass(rule,value,callback){
var that=this;
$.ajax({
url:context+"/abc?name="+that.abc.hello,
type:"GET",
async:false,
dataType:"json",
contentType:"application/json;charset=UTF-8",
data:{}
}).done(function(resp){
if(resp.data.isTrue){
callback();
}else{
callback(new Error("名称重复,请重新输入"))
}
})
},
//验证字符串
validateFontSize(rule,value,callback){
if(value.length<30){
callback();
}else{
callback(new Error("字符串长度在1-30之间"))
}
},
//验证字符串
validateCharacter(rule,value,callback){
if(this.checkSpecificKey(value)){
callback();
}else{
callback(new Error('请不要输入特殊字符:[`~!#$^&*()=|{}\':;\',\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“\'。,、?]‘\''))
}
},
submit(data) {
this.submitLoading=true,
this.$refs[data].validate((valid) => {
if (valid) {
//验证成功,提交
return true;
} else {
//验证失败返回
return false;
}
;
})
},
},
})
</script>
</body>
</html>
下面看下vue-element 输入框验证
1.控制输入位数
限制输入为10位,这种方式可以使输入框中输入10位后不能输入后续内容
因为number输入框自动将最后一位小数点忽略不计,因此“.”,"2.","3.3."这三种情况均为正确的输入
<el-form-item label="渠道:" prop="channelName">
<el-input v-model="formData.channelName" :maxlength="10" placeholder="请输入渠道名称"></el-input>
</el-form-item>
rules:{
channelName:[
{required:true,message:'渠道名称不能为空',trigger:'change'},
],
}
2.控制小数输入位数
input 设置类型为number,step控制步长,正则表达式匹配输入的格式必须为xxx.xxx.
注意,此种方法无法区分不输入的情况,故将提示信息合并为一个。
统一触发方式为change
<el-form-item label="短信单价:" prop="price" class="form-price">
<el-input type="number" step="0.001" v-model="formData.price" placeholder="请输入"></el-input>
</el-form-item>
//js
let checkPrice = (rule,value,callback)=>{
if(value){
let rgx = /^\d+(\.\d{1,3})?$/;
if(value.match(rgx)==null){
return callback(new Error('请检查输入格式,不能为空,且最多三位小数'))
}else{
callback();
}
}
};
rules:{
price:[
{required:true,message:'请检查输入格式,不能为空,且最多三位小数',trigger:'change'},
{validator:checkPrice,trigger:'change'}
]
},
3.验证时间控件选择的时间是否在某个范围
let checkSendTime = (rule, value, callback) => {
let hour = value ? value.getHours() :0;
if (value !== "") {
if (hour < 8 || hour > 21) {
return callback(new Error('请选择8:00~22:00之间发送'));
} else {
callback();
}
}
};
sendTime:[
{type:'date',required: true, message: '发送时间不能为空', trigger: 'blur'},
{validator:checkSendTime,trigger:'blur'}
]
看完了这篇文章,相信你对“element vue validate验证名称重复的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!