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中的指令有哪些?
随机推荐
- Unity打包IOS和Android以及之间的交互
1.导出的Xcode工程 主要讲解Unity导出的Xcode工程的目录结构 2.导出的Android-Eclipse工程 主要讲解Unity导出的Android-Eclipse工程的目录结构 3.导出 ...
- mysql中json_object函数的使用?
需求说明: 今天看了json_object函数的使用,在此记录下使用过程 操作过程: 1.使用json_object函数将一个键值对列表转换成json对象 mysql> select json_ ...
- 处理执行sql语句
sqlplus / as sysdba @1.sqlsqlplus / as sysdba @2.sqlsqlplus / as sysdba @3.sql
- (翻译)2016美国数学建模MCM F题(政策)翻译:难民移民政策建模
PROBLEM F:Modeling Refugee Immigration Policies With hundreds of thousands of refugees moving across ...
- BurpStuite使用技巧
技巧1:抓包,设置断点修改Response 1.抓包,右键点击--Do intercept--Response to this request 2.点击Forward--修改返回包,然后放行. 技巧二 ...
- Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LTS)
为什么要用vim编辑py文件? 因为在Linux命令行中,缺少图形界面的IDE,vim是最佳的文本编辑器,而为了更好的编辑py文本,所以配置vim. 1. 安装完整版vim vi和vim的区别? 在L ...
- javaweb项目中表单生成的验证码以及校验
首先先来看一下项目的结构吧,有两个servlet,一个是进行验证码的生成以及存储的,一个是进行校验的,还有一个jsp页面是用来实现form表单的书写和展示: 我们只需要看这三个就行了,其他的自动忽略: ...
- Hadoop计算平均值【转】
file1.txt a 1b 2a 3b 3a 5b 7c 3c 5 file2.txt a 1b 7c 5a 1c 3 结果: a 2.2b 4.75c 4.0 代码: package org.ap ...
- UIWindow 详解及使用场景
首先来看一下UIWindow 继承关系 方法和属性 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWindow : UIView //window的屏幕,默认是 [ ...
- hadoop集群操作常用命令
一.HDFS相关 1.启动NameNode sbin/hadoop-daemon.sh start namenode 2.启动DataNode sbin/hadoop-<span style=& ...