elementui el-form验证之坑

一.使用方法

 <el-form
            ref="formLabelAlign"
            :rules="rules"
            label-position="top"
            label-width="80px"
            :model="formLabelAlign"
          >
            <div class="detail_title">
              信息填写
            </div>
            <el-form-item label="新旧程度" prop="degreeType">
              <el-select
                v-model="formLabelAlign.degreeType"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="商品标题" prop="commodityTitle">
              <el-input
                v-model="formLabelAlign.commodityTitle"
                placeholder="请输入内容"
              ></el-input>
            </el-form-item>
            <el-form-item label="商品描述" prop="commodityDescription">
              <el-input
                type="textarea"
                :rows="3"
                v-model="formLabelAlign.commodityDescription"
                placeholder="请输入内容"
              ></el-input>
            </el-form-item>
            <el-form-item label="商品展示" prop="commodityImages">
              <el-upload
                class="avatar-uploader"
                multiple
                :limit="3"
                action="#"
                list-type="picture-card"
                ref="upload_img"
                :before-upload="beforeUp"
                :http-request="uploadFun"
              >
                <i slot="default" class="el-icon-plus"></i>
                <div slot="file" slot-scope="{ file }">
                  <img
                    class="el-upload-list__item-thumbnail"
                    :src="file.url"
                    alt=""
                  />
                  <span class="el-upload-list__item-actions">
                    <span
                      class="el-upload-list__item-preview"
                      @click="handlePictureCardPreview(file)"
                    >
                      <i class="el-icon-zoom-in"></i>
                    </span>
                    <span
                      v-if="!disabled"
                      class="el-upload-list__item-delete"
                      @click="handleRemove(file)"
                    >
                      <i class="el-icon-delete"></i>
                    </span>
                  </span>
                </div>
              </el-upload>
              <el-dialog :visible.sync="dialogVisible">
                <img width="100%" :src="dialogImageUrl" alt="" />
              </el-dialog>
            </el-form-item>
            <div class="detail_title">
              价格填写
            </div>
            <el-form-item label="入手价" prop="price">
              <el-input
                type="Number"
                v-model="formLabelAlign.price"
                placeholder="请输入入手价"
              ></el-input>
            </el-form-item>
            <el-form-item label="转让价" prop="transferPrice">
              <el-input
                type="Number"
                v-model="formLabelAlign.transferPrice"
                placeholder="请输入转让价"
              ></el-input>
            </el-form-item>
            <div class="detail_title">
              联系人信息填写
            </div>
            <el-form-item label="姓名" prop="linkMan">
              <el-input
                v-model="formLabelAlign.linkMan"
                placeholder="请输入姓名"
              ></el-input>
            </el-form-item>
            <el-form-item label="联系电话" prop="mobile">
              <el-input
                type="Number"
                v-model="formLabelAlign.mobile"
                placeholder="请输入联系电话"
              ></el-input>
            </el-form-item>
            <el-form-item>
              <el-button>取消</el-button>
              <el-button type="primary" @click="submitForm('formLabelAlign')"
                >立即创建</el-button
              >
            </el-form-item>
          </el-form>

 逻辑:

data内的验证规则

 rules: {
        // 新旧程度校验
        degreeType: [
          { required: true, message: "请选择新旧程度", trigger: "blur" }
        ],
        // 商品标题校验
        commodityTitle: [
          { required: true, message: "请输入商品标题", trigger: "blur" }
        ],
        // 商品描述校验
        commodityDescription: [
          { required: true, message: "请输入商品描述", trigger: "blur" }
        ],
        // 商品图片校验
        commodityImages: [
          { required: true, message: "请上传商品图片", trigger: "blur" }
        ],
        // 入手价校验
        price: [{ required: true, message: "请输入入手价", trigger: "blur" }],
        // 转让价校验
        transferPrice: [
          { required: true, message: "请输入转让价", trigger: "blur" }
        ],
        // 姓名校验
        linkMan: [{ required: true, message: "请输入姓名", trigger: "blur" }],
        // 手机号校验
        mobile: [
          { required: true, message: "请输入联系电话", trigger: "blur" },
          {
            validator: (rule, value, callback) => {
              let reg = /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]||19[0-            
                        9]14[57])[0-9]{8}$/;
              if (!reg.test(value)) {
                return callback(new Error("手机格式不正确"));
              } else {
                callback()
              }
            },
            message: "手机格式不正确",
            trigger: "blur"
          }
        ]
      },

需要记住的是自定义的验证的validator:(rule, value, callback)=>{  callback()}一定要在条件之后选择回调,否则表单提交的时候不会执行下去,

 async submitForm(formName) {
      let that = this;
      console.log(formName);
      let valid = await that.$refs[formName].validate().then((res) => {
        console.log(res);
      }).catch((err) => {
        console.log(err);
      })
      console.log(valid) //如果没有callback(),不会到这里
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值