zoukankan      html  css  js  c++  java
  • 表单的自定义校验

    <template>
      <a-form-model ref="ruleForm" :model="ruleForm" :rules="rules" v-bind="layout">
    
        <!-- 选择环境 -->
        <a-form-model-item  label="切换环境" prop="huanjing">
        <a-select placeholder="请选择环境" @change="handleChange">
          <a-select-option value="dev">
            dev
          </a-select-option>
          <a-select-option value="test">
            test
          </a-select-option>
          <a-select-option value="staging">
            staging
          </a-select-option>
        </a-select>
        </a-form-model-item>
    
         <!-- 内部账号id -->
        <a-form-model-item  label="内部账号id" prop="zhanghao">
          <a-input v-model="ruleForm.zhanghao"  placeholder="请填写内部账号id"/>
        </a-form-model-item>
    
    
          <!-- 密码 -->
        <a-form-model-item  label="Password" prop="pass">
          <a-input-password v-model="ruleForm.pass" type="password" autocomplete="off"  placeholder="必须包含字母、数字,8-16位"/>
        </a-form-model-item>
    
        <!-- 确认密码 -->
        <a-form-model-item  label="Confirm" prop="checkPass">
          <a-input-password v-model="ruleForm.checkPass" type="password" autocomplete="off" placeholder="请确认密码" />
        </a-form-model-item>
    
        <!-- 提交和重置  -->
        <a-form-model-item :wrapper-col="{ span: 14, offset: 4 }">
          <a-button type="primary" @click="submitForm('ruleForm')">
            Submit
          </a-button>
          <a-button style="margin-left: 10px" @click="resetForm('ruleForm')">
            Reset
          </a-button>
        </a-form-model-item>
    
      </a-form-model>
    </template>
    
    
    <script>
    export default {
      data() {
        
        let validatePass = (rule, value, callback) => {
          if (value === '') {
            callback(new Error('该字段为必填'));
          } else {
            if (this.ruleForm.checkPass !== '') {
              this.$refs.ruleForm.validateField('checkPass');
            }
            callback();
          }
        };
        let validatePass2 = (rule, value, callback) => {
          if (value === '') {
            callback(new Error('该字段为必填'));
          } else if (value !== this.ruleForm.pass) {
            callback(new Error("两次密码输入不一致"));
          } else {
            callback();
          }
        };
    
        return {
          ruleForm: {
            pass: '',
            checkPass: '',
            huanjing:'',
            zhanghao:'',
          },
          rules: {
            pass: [
                { validator: validatePass, trigger: 'change' },
                { required: true, message: '该字段为必填' },
                // { min: 8, max: 16, message: '长度在 8 到 16 个字符', trigger: 'change' },
                 {
            trigger: 'change',
            validator: (rule, value, callback) => {
              
              var passwordreg = /(?=.*d)(?=.*[a-zA-Z]).{8,16}/
    
              if (!passwordreg.test(value)) {
                callback(new Error('密码必须由数字、字母组合,请输入8-16位'))
              }else{
                callback()
              }
            } }
    
                ],
            checkPass: [
                { validator: validatePass2, trigger: 'change' },
                { required: true, message: '该字段为必填' },
                ],
            huanjing:[
                { required: true, message: '该字段为必填' },
                ],
            zhanghao:[
                { required: true, message: '该字段为必填' },
                ], 
          },
          layout: {
            labelCol: { span: 4 },
            wrapperCol: { span: 14 },
          },
        };
      },
      methods: {
        submitForm(formName) {
          this.$refs[formName].validate(valid => {
            if (valid) {
            //   alert('submit!');
            console.log(this.ruleForm)
            } else {
            //   console.log('error submit!!');
              return false;
            }
          });
        },
        resetForm(formName) {
          this.$refs[formName].resetFields();
        },
        handleChange(e){
            this.ruleForm.huanjing=e
        }
      },
    };
    </script>

    表单的使用 https://www.antdv.com/components/form-model-cn/

    密码组合校验: https://blog.csdn.net/qq_40295815/article/details/105433190

  • 相关阅读:
    opencv和linux的关联
    附加数据库 对于server XXX失败
    android.app.Dialog(23)里window的那些事(坑)
    hdu 4722 Good Numbers(数位dp)
    Java程序猿必知的10个调试技巧
    iir调试记录
    在Scope利用Content sharing Widget来分享内容
    JavaEE 技术选型建议,server配置,部署策略
    x265探索与研究(四):怎样编码视频?
    计算git树上随意两点的近期切割点。
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/13997622.html
Copyright © 2011-2022 走看看