vue--自定义验证指令
参考文档:
https://cn.vuejs.org/v2/guide/custom-directive.html
https://www.cnblogs.com/ilovexiaoming/p/6840383.html
实例代码:
<template>
<div id="app" class="app">
<h3>{{msg}}</h3>
<div class="input">
<input type="text" v-input v-focus ><span>{{msg1}}</span>
</div>
<div class="input">
<input type="text" v-input v-required ><span>{{msg2}}</span>
</div>
<div class="input">
<!-- required:true/false 表示这个是必填项 -->
<input type="text" v-input v-checked="{required:true,}" ><span>{{msg3}}</span>
</div>
<div class="input">
<!-- <input type="text" v-input v-validate="'required|min(6)|max(3)|minlength(2)|minlength(10)|regex([0~6])'"> -->
<input type="text" v-input v-validate="'required|min(2)|max(20)|minlength(6)|maxlength(12)'"><span>{{tipsMsg}}</span>
</div>
</div>
</template> <script>
export default {
name: 'App',
data () {
return {
msg: '指令',
tipsBorderColor:'red',
msg1: '最简单的指令',
msg2: '验证不能为空的指令',
msg3: '进行正则验证',
tipsMsg:'',
}
},
directives: {
// 修饰input框的指令
input: {
// 当被绑定的元素插入到DOM上的时候
inserted: function(el){
el.style.width = "300px";
el.style.height = "35px";
el.style.lineHeight = "35px";
el.style.background = "#ddd";
el.style.fontSize = "16px";
el.style.border = "1px solid #eee";
el.style.textIndent = "5px";
el.style.textIndent = "8px";
el.style.borderRadius = "5px";
}
},
// input框默认选中的指令
focus:{
inserted:function(el){
el.focus();
}
},
// 不能为空的指令
required:{
inserted: function(el){
el.addEventListener('blur',function(event){
if(el.value == '' || el.value == null){
el.style.border = "1px solid red";
console.log('我不能为空');
};
});
}
},
// 验证指令
checked:{
inserted: function(el){ }
},
// 验证
validate: {
inserted:function(el,validateStr){
// 将验证规则拆分为验证数组
let validateRuleArr = validateStr.value.split("|");
console.log(validateStr);
console.log(validateRuleArr);
// 监听失去焦点的时候
el.addEventListener('blur',function(event){
console.log(typeof(el.value));
//失去焦点进行验证
checkedfun();
});
// 循环进行验证
function checkedfun(){
for(var i=0; i<validateRuleArr.length; ++i){
let requiredRegex = /^required$/; // 判断设置了required
let minRegex = /min\(/; //判断设置了min 最小值
let maxRegex = /max\(/; //判断设置了max 最大值
let minlengthRegex = /minlength\(/; //判断设置了 minlength 最大长度
let maxlengthRegex = /maxlength\(/; //判断设置了 maxlength 最大长度
// 判断是否是 required 调用 require的方法
if(requiredRegex.test(validateRuleArr[i])){
if(!required()){break;};
};
// 判断是否设置了最小值
if(minRegex.test(validateRuleArr[i])){
if(!eval(validateRuleArr[i])){break;};
};
// 判断是否设置了最大值
if(maxRegex.test(validateRuleArr[i])){
if(!eval(validateRuleArr[i])){break;};
};
// 判断设置了最小长度
if(minlengthRegex.test(validateRuleArr[i])){
if(!eval(validateRuleArr[i])){break;};
};
// 判断设置了最大长度
if(maxlengthRegex.test(validateRuleArr[i])){
if(!eval(validateRuleArr[i])){break;};
};
};
}
// 验证是否是必填项
function required(){
if(el.value == '' || el.value == null){
console.log("不能为空");
return false;
};
return true;
}
// 最小值验证
function min(num){
if(el.value < num){
console.log('最小值不能小于'+num);
return false;
};
return true;
};
// 最大值验证
function max(num){
if(el.value > num){
console.log('最大值不能大于'+num);
return false;
};
return true;
};
// 最小长度验证
function minlength(length){
if(el.value.length < length){
console.log('最小长度不能小于'+length);
return false;
};
return true;
};
// 最大长度进行验证
function maxlength(length){
if(el.value.length > length){
console.log('最大长度不能大于'+length);
return false;
};
return true;
}
}
}
}
}
</script> <style>
#app{}
.input{padding-bottom:20px;}
.app input{width: 300px; height: 35px; outline:none; background:#ddd;}
.app span{padding-left:20px;}
</style>
vue--自定义验证指令的更多相关文章
- vue自定义tap指令
1.Vue指令 Vue提供自定义实现指令的功能, 和组件类似,可以是全局指令和局部指令,详细可以参见vue官网自定义指令一节(https://cn.vuejs.org/v2/guide/custom- ...
- vue自定义拖动指令
1.在项目开发中,需要对div进行拖动.因为需要自定义组件 a>定义全局拖拽指令: 定义全局指令,需要在main.js中写入vue.directive('drag',{});即可.但是一般会在外 ...
- Angular4 后台管理系统搭建(9) - 用自定义angular指令,实现在服务端验证
最近这段时间发现,北京这用angular4 或 angular2的公司很少.几乎是没有.很担心自己是不是把精力放到了不应该的地方.白耽误了时间.但是随着我对新版angular框架理解的加深.个人感觉a ...
- vue 自定义指令input表单的数据验证
一.代码 <template> <div class="check" > <h3>{{msg}}</h3> <div clas ...
- Vue自定义指令使用场景
当你第一次接触vue的时候,一定会使用到其中的几个指令,比如:v-if.v-for.v-bind...这些都是vue为我们写好的,用起来相当的爽.如果有些场景不满足,需要我们自己去自定义,那要怎么办呢 ...
- vue 自定义指令(directive)实例
一.内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href v-bind:class v-bind:title v-bind:bb 2.v-on:用于监听DOM事件: 例 ...
- vue自定义指令
Vue自定义指令: Vue.directive('myDr', function (el, binding) { el.onclick =function(){ binding.value(); } ...
- Vue 自定义图片懒加载指令v-lazyload
Vue是可以自定义指令的,最近学习过程中遇见了一个需要图片懒加载的功能,最后参考了别人的代码和思路自己重新写了一遍.以下将详细介绍如何实现自定义指令v-lazyload. 先看如何使用这个指令: &l ...
- vue 自定义指令的使用案例
参考资料: 1. vue 自定义指令: 2. vue 自定义指令实现 v-loading: v-loading,是 element-ui 组件库中的一个用于数据加载过程中的过渡动画指令,项目中也很少需 ...
- vue自定义指令用法总结及案例
1.vue中的指令有哪些?
随机推荐
- InstallShield 制作MSI
1. click [project Assistant] 2. select [Build Installation], open this tab asfollow: 3.whenbuild ok ...
- ABBYY FineReader 12中的用户模式你会用吗
在ABBYY FineReader 12OCR文字识别软件中,有一个概念叫“训练”,它是在字符图像和字符本身之间建立对应关系的过程,训练模式可以提高含有装饰字体的文档或包含特殊字符(例如数学符号)文档 ...
- python字符串 分片索引
字符串是字符的有序集合,可以通过其位置来获得具体的元素.在python中,字符串中的字符是通过索引来提取的,索引从0开始. python可以取负值,表示从末尾提取,最后一个为-1,倒数第二个为-2,即 ...
- mongo文件空间
mongo的文件空间,是由一个一个的文件空间组成,如下图 在mongodb刚安装完成时只有一个指定的db都只有一个文件空间而已,例如这里的db是filedb 那么他的第一个文件空间为filedb.0, ...
- go 类型转换
https://studygolang.com/articles/3400 https://studygolang.com/articles/6633
- [原]IOS 后台发送邮件
skpsmtpmessage 是ios第三方后台发送邮件库 https://github.com/jetseven/skpsmtpmessage.git -(void)statrUpLoad:(id) ...
- 图表ASP:Chart
ASP:Chart 属性 System.Web.UI.DataVisualization.Charting 命名空间包含用于图表 Web 服务器控件的方法和属性. 详细了解Chart类http:// ...
- Java获取一维数组的最小值
编写程序,实现接受用户在文本框中输入的单行数据.这些数据都是整数数字,以空格进行分隔,空格数量不限.并将这些数据分割成一维数组,再从数组中提取最小值显示在界面中.思路是先对用户的输入进行验证,即先用t ...
- Spring事务超时、回滚的相关说明
事务超时: @Transactional(timeout = 60) 如果用这个注解描述一个方法的话,线程已经跑到方法里面,如果已经过去60秒了还没跑完这个方法并且线程在这个方法中的后面还有涉及到对数 ...
- RF判断列表、字典、整数、字符串类型是否相同方法
${d} create list shk shsh${w} create list ${e} evaluate type(${d}) ${t} evaluate type(${w}) should ...