zoukankan      html  css  js  c++  java
  • ele之vue3.0的form表单验证与重置

    <template>
      <div class="dia-cont">
        <el-form :model="ruleForm" :rules="rules" ref="ruleFormsss" label-width="100px" class="demo-ruleForm">
          <el-form-item label="用户名称" prop="xm">
            <el-input v-model="ruleForm.xm"></el-input>
          </el-form-item>
          <el-form-item label="登录账号" prop="name">
            <el-input v-model="ruleForm.name"></el-input>
          </el-form-item>
          <el-form-item label="密码" prop="password">
            <el-input type="password" v-model="ruleForm.password" :disabled="!passStatus" autocomplete="off"></el-input>
          </el-form-item>
          <el-form-item label="确认密码" prop="checkPass">
            <el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"></el-input>
          </el-form-item>
          <el-form-item label="单位" prop="dw" class="add-dw">
            <el-select v-model="ruleForm.region" placeholder="请选择活动区域">
              <el-option label="区域一" value="shanghai"></el-option>
              <el-option label="区域二" value="beijing"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="状态" prop="isdelete">
            <el-switch v-model="ruleForm.isdelete" active-color="#179BFF" :active-text="showName" active-value="1" inactive-value="0" :width="54"></el-switch>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
            <el-button @click="resetForm('ruleForm')">取消</el-button>
          </el-form-item>
        </el-form>
      </div>
    </template>
    
    <script  lang="ts" >
    import { defineComponent, unref, defineAsyncComponent, ref, reactive, onMounted, toRefs, markRaw, shallowRef, getCurrentInstance } from 'vue';
    export default defineComponent({
      components: {
        props: {
          dialogTitle: {
            type: String
          }
        }
      },
      setup(props, context) {
        const ruleFormsss = ref(null);
        // 定义变量
        let data = reactive({
          ruleForm: {
            xm: '',
            name: '',
            date1: '',
            date2: '',
            delivery: false,
            type: [],
            resource: '',
            desc: ''
          },
          rules: {
            name: [
              { required: true, message: '请输入活动名称', trigger: 'blur' },
              { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
            ],
            region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],
            date1: [{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }],
            date2: [{ type: 'date', required: true, message: '请选择时间', trigger: 'change' }],
            type: [{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }],
            resource: [{ required: true, message: '请选择活动资源', trigger: 'change' }],
            desc: [{ required: true, message: '请填写活动形式', trigger: 'blur' }]
          }
        });
        const submitForm = async () => {
          const form: any = unref(ruleFormsss);
          if (!form) return;
          try {
            await form.validate();
            const { xm, name } = data.ruleForm;
            console.log('76', xm, name);
          } catch (error) {}
        };
        const resetForm = () => {
          const form: any = unref(ruleFormsss);
          form.resetFields();
        };
        return {
          ...toRefs(data),
          submitForm,
          resetForm,
          ruleFormsss
        };
      }
    });
    </script>
    <style lang="less" scoped>
    /deep/ .el-switch {
      position: relative;
      height: 24px;
      line-height: 24px;
      &.is-checked {
        .el-switch__core {
          background: #179bff;
          &:after {
            margin-left: -22px;
          }
        }
      }
      .el-switch__label,
      .el-switch__core {
        height: 24px;
      }
      .el-switch__core {
        border-radius: 12px;
        border: none;
        background: #f1f1f1;
        &:after {
          box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.3);
           22px;
          height: 22px;
        }
      }
      .el-switch__label.is-active {
        color: #333;
      }
      .el-switch__label--right {
        margin-left: 0px;
        &.is-active {
          color: #fff;
          right: 24px;
        }
        position: absolute;
        right: 5px;
        top: -1px;
        color: #999;
        > span {
          font-size: 12px;
        }
      }
    }
    </style>
    <style lang="less">
    .dia-cont .el-form-item__content {
      display: flex;
    }
    </style>

    注解

     const submitForm = async () => {
          const form: any = unref(ruleFormsss);
          if (!form) return;
          try {
            await form.validate();
            const { xm, name } = data.ruleForm;
            console.log('76', xm, name);
          } catch (error) {}
        };
    里面的
    async
    await 很重要,要不就会报验证的警告错误
  • 相关阅读:
    C# List<T>用法(转)
    任务列表 (Visual Studio)
    TSQL行转列、列转行
    HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案(转)
    JS正则表达式详解(转)
    Windows远程登录命令
    JavaScript中的try...catch和异常处理(转)
    javascript如何触发button 的click事件
    在ASP.NET中利JavaScript实现控件的聚焦(转)
    输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码)
  • 原文地址:https://www.cnblogs.com/lsc-boke/p/14717953.html
Copyright © 2011-2022 走看看