element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】


Posted in Javascript onNovember 20, 2018

具体代码如下所示:

<!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验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js同比例缩放图片的小例子
Oct 30 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
May 25 Javascript
iframe跨域通信封装详解
Aug 11 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
Aug 15 Javascript
JS获取屏幕高度的简单实现代码
May 24 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 Javascript
微信小程序 底部导航栏目开发资料
Dec 05 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
Sep 12 Javascript
原生JS实现分页
Apr 19 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 #jQuery
一步步教你利用Docker设置Node.js
Nov 20 #Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 #Javascript
vue中的适配px2rem示例代码
Nov 19 #Javascript
JS监听事件的叠加和移除功能
Nov 19 #Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 #Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 #Javascript
You might like
php线性表的入栈与出栈实例分析
2015/06/12 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
React快速入门教程
2017/01/17 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
Python的动态重新封装的教程
2015/04/11 Python
Python每天必学之bytes字节
2016/01/28 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python实现决策树分类
2018/08/30 Python
Python向excel中写入数据的方法
2019/05/05 Python
python 搜索大文件的实例代码
2019/07/08 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
预防艾滋病宣传标语
2014/06/25 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
天气温馨提示语
2015/07/14 职场文书
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL