关于element中模态框里面的表单的验证问题

  • 和iview的form的表单验证类似
  • element中表单验证的步骤:
  • 第一步:给 el-form设置属性 rules :rules
  • 第二步:同时给需要验证的每个 el-form-item设置属性 prop 指向对应字段即可 prop=”“
  • 第三步:注意:el-form标签里面是 :model
  • 第四步:注意:在el-form标签里面必须添加 ref,相当于id,在此范围内的表单验证有效
  • 第五步:在操作保存按钮时,添加方法,对整个表单进行校验,参数为检验完的回调,会返回一个 Boolean 表示成功与失败。
  • element中模态框的步骤:
  • 第一步:给el-dialog设置 :visible.sync="dialogVisible" //是否显示 Dialog,支持 .sync 修饰符,默认为false
  • 第二步:给el-dialog设置 :close-on-click-modal="false"//是否可以通过点击 modal 关闭 Dialog,默认为true
  • 第三步:给el-dialog设置 :close-on-press-escape="false" //是否可以通过按下 ESC 关闭 Dialog,默认为false
  • 第四步:看项目各自情况而定
  • 常见问题: 点击模态框新增完form表单后,点击确认或取消后,再次打开模态框需清除上次填写的数据痕迹。
    例如:
注意:form表单里面的绑定的元素,一定要在data里面定义全了,不全也是影响表单验证出来问题的原因。
    <el-dialog title="新增任务" :visible.sync="taskModal" width="50%" center :close-on-click-modal="false" :close-on-press-escape="false">
      <el-form ref="formItem" label-width="100px" :model="formItem" :rules="ruleInline" :data='formItem'>
        <el-row>
          <el-col :span="20">
            <el-form-item label="任务名称:" prop="taskName">
              <el-input v-model="formItem.taskName" placeholder="请输入任务名称" :maxlength="20" :minlength="3"></el-input>
            </el-form-item>
            <el-form-item label="维修类型:" prop="classCode">
              <el-select v-model="formItem.classCode" placeholder="选择维修类型" @change="changeMaintenance">
                <el-option v-for="item in maintenance_list" :key="item.classCode" :label="item.className" :value="item.classCode"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="辖区:" prop="jurisdiction">
              <el-cascader :options="options" v-model="formItem.jurisdiction" change-on-select @change="handleChange" :props="props" clearable>
              </el-cascader>
            </el-form-item>
            <el-form-item label="协管员" prop="assistant">
              <el-select size="small" clearable v-model="formItem.assistant" placeholder="">
                <el-option v-for="(item,index) in volunteer_list" :label="item.realName" :value="item.userPin" :key="index"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item prop="date" label="任务周期:">
              <el-date-picker v-model="formItem.date" :picker-options="dutyCycleOptions" type="datetimerange" :default-time="['00:00:00', '23:59:59']" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss" @change='getsignDate'>
              </el-date-picker>
            </el-form-item>
            <el-form-item label="具体地址:" prop="address">
              <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4}" v-model="formItem.address" :maxlength="50" placeholder="请输入详细地址"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" style="text-align:center">
        <el-button type="primary" @click="confirm('formItem')">发布</el-button>
        <el-button type="ghost" @click="cancel('formItem')">取消</el-button>
      </div>
    </el-dialog>
//点击新增按钮打开模态框,对该表单项进行重置。重置表单要写在打开模态框的操作中管用,写在模态框点击保存和确认里面会有问题。
    repairgoingListAdd() {  //新增操作按钮
      this.taskModal = true   //打开模态框
      this.volunteer_list = []  //对于下拉框的表单要将其单独置空。
      this.$nextTick(() => {
        this.$refs['formItem'].resetFields()   //对表单进行重置。
      })
    },
//新增模态框点击确认
    confirm(name) {
      this.$refs[name].validate(valid => {
        if (valid) {
            //对新增表单数据通过调用接口返回给后台的操作
            //省略
            this.taskModal = false  //关闭模态框
        }
     //点击取消时最好也重置下表单
      cancel(name) {
      if (this.$refs[name] !== undefined) {
        this.$refs[name].resetFields()
      }
      this.taskModal = false
    },
表单验证:
repairMaintainSet.rulesParams = function () {
    return{
        taskName:[
            {required: true,message: '任务名称不能为空',trigger: 'blur'},
        ],
        classCode:[
          {required: true,message: "维修类别不能为空", trigger: "change"},
        ],
        userCode:[
            {required: true,message: "协管员不能为空", trigger: "change"},
          ],
        className:[
          {required: true,message: "任务类别不能为空", trigger: "change"},
        ],
        deviceModel:[
            {required: true,message: '任务名称不能为空',trigger: 'blur'},
        ],
        jurisdiction:[
            { required: true, message: '请选择辖区', trigger: 'change' },
          ],
        jurisdiction2:[
            { required: true, message: '请选择辖区', trigger: 'change' },
          ],
        assistant:[
            { required: true, message: '请选择协管员', trigger: 'change' },
          ],
        date:[
            {required: true,message: '任务周期不能为空',trigger: 'change'},
        ],
        address:[
            {required: true,message: '具体地址不能为空',trigger: 'blur'},
        ],
    }
}