许胤白 2023-02-01 16:45 采纳率: 80%
浏览 41
已结题

关于#前端#的问题:elementUI的form表单,我想去效验身份证的多种证件,该如何写才能根据证件类型进行证件号的效验

elementUI的form表单,我想去效验身份证的多种证件,该如何写才能根据证件类型进行证件号的效验?

img


就是,当我选择了香港证件,会去rule效验是不是香港身份证,每种证件我都会去效验。怎么统一的写?

img


试过这种的,但是没有用,不会去效验上。有没有会的友友帮助一下

  • 写回答

3条回答 默认 最新

  • undo1996 2023-02-01 17:44
    关注
    <template>
      <div>
        <el-form
          :model="addData"
          :rules="rules"
          label-width="120px"
          style="text-align: left; margin-top: 2%"
        >
          <el-form-item label="选择证件:">
            <el-select
              v-model="addData.value"
              placeholder="请选择"
              @change="changValue"
            >
              <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="num">
            <el-input v-model="addData.num" placeholder="请输入内容"></el-input>
          </el-form-item>
        </el-form>
      </div>
    </template>
    
    <script>
    export default {
      name: "Test",
      data() {
        return {
          addData: {
            value: "",
            num: "",
          },
          options: [
            {
              value: 1,
              label: "居民身份证",
            },
            {
              value: 2,
              label: "香港身份证",
            },
          ],
          rules: {
            num: [
              {
                required: true,
                message: "请输入证件号",
              },
            ],
          },
        };
      },
      methods: {
        changValue() {
          switch (this.addData.value) {
            case 1:
              this.rules.num = [
                {
                  required: true,
                  pattern:
                    /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
                  message: "请输入正确的身份证",
                  trigger: "blur",
                },
              ];
              console.log(this.rules.num);
              break;
            case 2:
              this.rules.num = [
                {
                  required: true,
                  pattern: /^[A-Z]{1,2}[0-9]{6,10}[0-9A-Z]$/,
                  message: "请输入正确的香港身份证",
                  trigger: "blur",
                },
              ];
              console.log(this.rules.num);
              break;
            default:
              break;
          }
        },
      },
    };
    </script>
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月10日
  • 已采纳回答 2月2日
  • 创建了问题 2月1日

悬赏问题

  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 哪个tomcat中startup一直一闪而过 找不出问题
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码