vue多步骤表单的实现以及遇到的问题

1.多步骤表单的实现

使用elment-ui的组件步骤条(el-step)和表单组件(el-form)实现

传送门

组件 | Element

实现代码如下

 <el-steps :active="active" finish-status="success">
        <el-step title="登记基本信息" />
        <el-step title="上传合同信息" />
    </el-steps>
    <el-form
        ref="dataForm"
        :model="dataForm"

        :rules="formRules"

        label-position="left"
        label-width="100px"
        style="width: 400px; 
        margin-left: 50px">
        
<!-- 基本信息填写部分 -->
    <div v-show="active == 1">

        <el-form-item label="用户名" prop="realName">
          <el-input v-model="dataForm.realName" placeholder="姓名"></el-input>
        </el-form-item>

        <!--  -->
        <el-form-item label="工号" prop="userName">
          <el-input v-model="dataForm.userName" disabled></el-input>
        </el-form-item>
  
        <el-form-item label="部门" prop="dep" >
          <el-select v-model="dataForm.dep" placeholder="开发部" >
            <el-option v-for="item in depList" 
            :label="item.name"  
            :value="item.id" 
            :key="item.id">
          </el-option>
          </el-select>
        </el-form-item>
  
        <el-form-item label="权限" prop="permissions">
          <el-checkbox-group v-model="dataForm.permissions">
            <el-checkbox v-for="item in permissionsList"
            :key="item.roleId"
            :label="item.roleId"
           >
           {{ item.roleName }}
          </el-checkbox>
          </el-checkbox-group>
          </el-form-item>
    </div>
  <div v-show="active == 2">
        
      <el-form-item label="签订时间" prop="createDatetime">

      <el-date-picker
      v-model="dataForm.createDatetime"
      value-format="yyyy-MM-dd"
      type="date"
      placeholder="选择日期">
    </el-date-picker>
      </el-form-item>
      <el-form-item label="到期时间" prop="overDatetime">

    <el-select v-model="dataForm.overDatetime" placeholder="合同年限">
        <el-option label="一年期" value="1" ></el-option>
        <el-option label="两年期" value="2" ></el-option>
        <el-option label="三年期" value="3"></el-option>
        <el-option label="四年期" value="4"></el-option>
      </el-select>
      </el-form-item>

      <el-form-item label="状态" size="mini" prop="tag">
      <el-radio-group v-model="dataForm.tag">
          <el-radio :label="0">实习</el-radio>
          <el-radio :label="1">正式</el-radio>
          <el-radio :label="2">劳务</el-radio>
      </el-radio-group>
      </el-form-item>
</div>

2.遇到的问题

上面的代码实现了一个多步骤的表单,接下来就是对表单校验规则的完善。预期的实现效果是必须完整填写第一个表单的所有字段才可以进入第二步骤,如何才能对表单的部分字段进行校验呢?

参考element官方文档。

this.$refs['dataForm'].validateField(['dep','realName'], (valid) => {

        if (!valid) {

           // 处理逻辑

        }

})

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和中提到了使用Vue的form组件时遇到了validate方法无效的问题和validateFields方法部分未执行的问题。根据这些信息,可以初步判断是自定义校验方法中的错误导致了这些问题的出现。 引用中提到了在验证通过和不通过的情况下,打印的结果不一致。这可能意味着在验证过程中出现了错误。 而引用中提到了每个if条件都应该对应一个else,并且每个条件下都要确保执行callback。这提醒我们在自定义校验方法中要确保正确的执行callback。 综上所述,针对这个问题,建议做以下几个步骤来解决: 1. 首先,检查自定义校验方法中是否存在错误。确保所有的条件都正确,并且在不同情况下都执行正确的callback。这可能是导致validate和validateFields方法无效的原因。 2. 确认在验证过程中是否出现了其他错误。可以在代码中添加一些打印语句或调试器来检查验证的过程和结果。如果在特定情况下没有打印或执行callback,那么可能是验证过程中出现了错误。 3. 检查是否正确引用和绑定到Vue实例。确保组件正确地绑定到this.$refs中,并且可以正确地访问和调用的方法。 4. 最后,确保使用的Vue版本和相关组件的版本是兼容的。有时候版本不匹配可能会导致一些问题。 通过以上步骤,应该能够解决this.$refs.form.validate和this.props.form.validateFields方法无效的问题,并找到其他可能导致验证不通过的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值