zoukankan      html  css  js  c++  java
  • iview表单验证

    iview表单验证的步骤

    • 第一步:给 Form 设置属性 rules
    :rules="规则设置"
    
    • 第二步:同时给需要验证的每个 FormItem 设置属性 prop 指向对应字段即可 prop=”“
    • 第三步:注意:Form标签里面是 :model
    • 第四步:注意:在Form标签里面必须添加 ref,相当于id,在此范围内的表单验证有效
    • 第五步:在操作保存按钮时,添加方法,对整个表单进行校验,参数为检验完的回调,会返回一个 Boolean 表示成功与失败。

    位置

    一般位置是在 Data()里面

    data() return  { editInfoValidate:{
                        contractNo:[
                                   { required: true, message: '合同编号不能为空', trigger: 'blur' },
                                ] 
    } }
    

    也可以放在 和new Vue 一个层级,这样变成全局验证
    还可以放在FormItem 里(不推荐)

    <FormItem
         prop="UserId"
              :rules=" [
                  { required: true, message: '请选择一项', trigger: 'change',type:'number',min:1},
              ]"
        >
           <Select v-model="formAddOrder.UserId" filterable @on-change="selectUser">
                    <Option v-for="(item,index) in userList" :value="item.UserId" :label="item.name" :key="index" >
                          <span>{{item.name}}</span>             
                      </Option>
           </Select>
     </FormItem>
    

    例子

    //methods里面,写的方式
    editInfoValidate: {
    
            CityId: [  { required: true, message: '  ?     ', type: 'number' },
            { type: 'string',pattern:/^(([1-9]d{0,3})|0)(.d{0,2})?$/, message:'数量应为正浮点数且不超过9999.99', trigger:'blur'},],
    
           Title: [  { required: true, message: ''},
                    {type: 'string', max: 5, message: '',trigger: 'blur'} ,
                     
           ]
    },
    
        
    
    
    ////methods里面,写的方式
    addChange(name){
         this.$refs[name].validate(valid => {
              if (valid) {
              }
          });
    

    1.2 FormItem 添加验证 prop="name"

    支持的类型

    
    type:'string'  
    string: 必须是字符串类型。这是默认类型
    number: 必须是数字
    boolean: 必须是布尔型的
    method:必须是类型函数
    regexp: 必须是ReGEXP的实例,或者是在创建新的ReGEXP时不会生成异常的字符串
    integer:必须是整数.
    float:必须是浮点数.
    array: 必须是由Array.isArray确定的数组
    object: 必须是类型对象而不是Array.isArray
    enum: 枚举中必须存在值。
    date: 按日期确定的值必须有效
    url: 必须是URL类型。
    hex: 必须是十六进制。
    email:必须是电子邮件类型。
     
    pattern: schema.pattern.email
    
    { type: 'number', message: '', trigger: 'blur', transform(value) {
            return Number(value);
    }
    

    内置的验证规则

     
    required: true 
     
    pattern :正则表达式
    
    min: 6 //最小值6
    
    max:10// 最大值10
    
    Length : 长度
    
    enum: 验证字段是否存在其中
    

    enum: 验证字段是否存在其中

    { message:'不包含a , u, g',trigger: 'change',type: 'enum',enum: ['a', 'u', 'g']}
    
    whitespace : true | false
    true:空白字符 ->错误提醒
    false: 空白字符->不报错
    

    设置提示

    message:'提示信息'
    

    设置事件

    trigger : 'change' | 'blur'
    trigger: 'blur' 
    

    iview进行多重验证的写法:

    ruleValidate: {
                 goodsNum: [
                         { required: true, message: '数量不能为空', trigger: 'blur' },
                         { type: 'string',pattern:/^(([1-9]d{0,3})|0)(.d{0,2})?$/, message:'数量应为正浮点数且不超过9999.99', trigger:'blur'},
                            ],
          }
    

    2.2 自定义验证

    方式1

    // 定义

    data() {
        const validatePass = (rule, value, callback) => {
          var passex = /^(?=.*d)(?=.*[a-zA-Z])(?!.*s).{8,22}$/;
          if (value === "" || !passex.test(value)) {
            callback(new Error("密码不能为空且为8-22位的字母和数字组合"));
          } else {
            if (this.changePassForm.TwoPassWord !== "") {
              // 对第二个密码框单独验证
              this.$refs.changePass.validateField("TwoPassWord");
            }
            callback();
          }
        };
        
        return {}
    

    使用

    validaterules: {
            OldPassWord: [
              {
                type: "string",
                required: true,
                message: "请输入原始密码",
                trigger: "blur"
              }
            ],
            NewPassword: [
              {
                required: true,
                validator: validatePass,//注意这里
                trigger: "blur"
              }
            ]
        
    }
    
     {validator(rule, value, callback, source, options) {
      var errors = [];
      if (!/^[a-z0-9]+$/.test(value)) {
         
              callback('       ?     ?...');
          } 
            callback(errors);
      
     }}
    

    全局的验证,例子

    new Vue({
                el: '#addModule',
                data(){
                    var  validateuser = function(rule, value, callback){
                        if(!value){
                            return callback(new Error("       ?   "));
                        }else if(!/^[a-zA-Zd]+$/.test(value)){
                            return callback(new Error("    ?     ?   "))
                        }else{
                            callback();
                        }
                    };
    
    
    return{
    		ruleValidate:{
                            username    : [{validator: validateuser,trigger: 'blur'}],
                            nick        : [{validator: validatenick,trigger: 'blur'}],
                            password    : [{validator: validatePass, trigger: 'blur' },{min:6,message:'         ? ?}],
                            rpassword   : [{validator: validatePassCheck, trigger: 'blur' },{min:6,message:'         ? ?}],
                            group:[{required: true, type: 'string', message: '  ?     ', trigger: 'change'}]
    }
                     
    
  • 相关阅读:
    arm架构与体系结构
    C语言双链表遍历,插入,删除
    C语言实现单链表的遍历,逆序,插入,删除
    C语言函数的变参实用与分析
    DEBUG宏
    运算中的临时匿名变量
    main函数的传参与返回
    存储类、作用域、生命周期、链接属性
    制作动态链接库并使用
    内存管理——进程创建,执行,缺页,终止
  • 原文地址:https://www.cnblogs.com/francisXu/p/13639710.html
Copyright © 2011-2022 走看看