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 function使用心得
May 10 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
Bootstrap每天必学之滚动监听
Mar 16 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
使用命令行工具npm新创建一个vue项目的方法
Dec 27 Javascript
React项目动态设置title标题的方法示例
Sep 26 Javascript
react实现同页面三级跳转路由布局
Sep 26 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 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
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
js对象数组按属性快速排序
2011/01/31 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
3种python调用其他脚本的方法
2020/01/06 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
公司任命书模板
2014/06/06 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
推销搭讪开场白
2015/05/28 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
MySQL约束超详解
2021/09/04 MySQL
Nebula Graph解决风控业务实践
2022/03/31 MySQL
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技