vue项目的给邮箱和手机号添加校验功能

一:先上全部代码:

<template>
    <div>
      <Nav></Nav>
      <Header>
        <MyDialog>您可以在此修改您的账号相关信息!</MyDialog>
      </Header>
      <el-card style="width: auto; margin-top: 10px" shadow="hover">
        <el-form ref="form" label-width="80px" size="small" :rules="rules"  :model="form">
          <el-form-item label="账号" style="margin-left: 400px">
            <el-input v-model="form.username" disabled autocomplete="off" style="width: 400px"></el-input>
          </el-form-item>
          <el-form-item label="姓名" style="margin-left: 400px">
            <el-input v-model="form.name" autocomplete="off" style="width: 400px"></el-input>
          </el-form-item>
          <el-form-item label="邮箱" style="margin-left: 400px" prop="email">
            <el-input v-model="form.email" autocomplete="off" style="width: 400px"></el-input>
          </el-form-item>
          <el-form-item label="电话" style="margin-left: 400px" prop="phone">
            <el-input v-model="form.phone" autocomplete="off" style="width: 400px"></el-input>
          </el-form-item>
          <el-form-item label="地址选择" style="margin-left: 400px">
            <area-select :level="2" v-model="address1" :data="pcaa"></area-select>
          </el-form-item>
          <el-form-item label="地址" style="margin-left: 400px">
            <el-input
              type="textarea"
              v-model="form.address"
              disabled
              autocomplete="off"
              style="width: 400px"
            ></el-input>
          </el-form-item>
          <el-form-item style="margin-left: 500px">
            <el-button type="primary" @click="saveForm">保 存</el-button>
          </el-form-item>
        </el-form>
      </el-card>
      <Footer></Footer>
    </div>
  </template>

<script>
import Nav from '../../components/Common/Nav'
import Footer from '../../components/Common/Footer'
import Header from '../../components/Common/HeadNav'
import { getByUserId, updateUser } from '../../api/user'
import { pca, pcaa } from 'area-data'

export default {
  name: 'AccountSetting',
  components: {
    Nav,
    Footer,
    Header
  },
  data () {
    return {
      form: {
        id: '', // 绑定表单数据的 id 字段
        username: '',
        name: '',
        email: '',
        phone: '',
        address: ''
      },
      user: localStorage.getItem('userInfo')
        ? JSON.parse(localStorage.getItem('userInfo'))
        : {},
      value: '',
      address1: [], // 接收地区的数组对象
      pca: pca,
      pcaa: pcaa,
      rules: {
        email: [
          // { message: '请输入邮箱', trigger: 'blur' },
          { required: false, type: 'email', message: '请输入正确的邮箱格式', trigger: ['blur', 'change'] }
        ],
        phone: [
          // { message: '请输入手机号', trigger: 'blur' },
          { required: false, pattern: /^1[34578]\d{9}$/, message: '请输入正确的手机号码', trigger: ['blur', 'change'] }
        ]
      }
    }
  },
  created () {
    this.load()
  },
  methods: {
    load () {
      const token = localStorage.getItem('token')
      const username = this.user.name
      if (!username || !token) {
        this.$message.error('当前无法获取用户信息!请登录!')
        return
      }

      // 缓存中有数据,根据id获取其他信息
      console.log(token)
      // 构造请求头对象
      const headers = {
        token: `${token}`
      }
      getByUserId(this.user.id, headers)
        .then((response) => {
          console.log(response.data)
          this.form = response.data.data
        })
    },
    saveForm () {
      this.$refs.form.validate(valid => {
        if (valid) {
          const token = localStorage.getItem('token')
          // 构造请求头对象
          const headers = {
            token: `${token}`
          }

          updateUser(this.form, headers)
            .then(() => {
              this.$message.success('保存成功')
              this.load()
              this.$emit('refreshUser')
            })
            .catch((error) => {
              this.$message.error(`保存失败:${error.message}`)
            })
        } else {
          this.$message.error('请填写正确的表单信息')
        }
      })
    }
  },
  watch: {
    address1 (newVal) {
      const province = pcaa[86][newVal[0]]
      const city = pcaa[newVal[0]][newVal[1]]
      const district = pcaa[newVal[1]][newVal[2]]
      const address2 = [province, city, district].join('')
      this.form.address = address2
      console.log(this.form.address)
    }
  }
}
</script>

  <style>
  /* 样式省略 */
  </style>

二:介绍:

这是在做一个个人信息的修改页面,打开后可以根据本地缓存的用户id字段从服务端获取用户的具体信息并展示出来,修改完点击提交可以更改数据。

三:目标需求:给邮箱和手机号添加校验功能(可以不填内容,但填了就要符合基本数据的结构)

四:操作:

1、ref后取表单元素,:rules设置校验的规则,:model绑定数据模型(这个要做)

(为什么还要绑定数据对象:)

2、(非常重要的事情):千万记得给每个标签都使用prop=""的方式标记上,必然也无法进行校验,(记得给想要校验的东西的都标记上)

3、要校验就需要把数据的字段都列出来,不要写个空对象 

4、在return下写校验规则

rules: {
        email: [
          { required: false, type: 'email', message: '请输入正确的邮箱格式', trigger: ['blur', 'change'] }
        ],
        phone: [
          { required: false, pattern: /^1[34578]\d{9}$/, message: '请输入正确的手机号码', trigger: ['blur', 'change'] }
        ]
      }

 required是是否是必填;type和pattern是设置的类型和规则,message是提示信息,trigger是什么操作下会校验

5、最后在执行逻辑上写上校验的核心判断代码:

根据¥refs获取上面设置的ref的组件元素,调用了它的 validate 方法 ,该方法接受一个回调函数作为参数,在校验结束后会将校验结果传递给该回调函数。回调函数的参数 valid 是一个布尔值,表示表单是否通过校验。如果 validtrue,则表示表单校验通过,可以执行保存逻辑。反之,如果 validfalse,则表示表单校验不通过,需要进行错误处理。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3结合Element Plus使用JS实现电话号码和邮箱校验可以通过以下步骤: 1. 安装Element Plus 在终端中运行以下命令安装Element Plus: ``` npm install element-plus --save ``` 2. 引入Element Plus 在你的Vue组件中,引入Element Plus的必要组件: ```javascript <template> <div> <el-input v-model="phone" placeholder="请输入手机号"></el-input> <el-button type="primary" @click="checkPhone">校验手机号码</el-button> <el-input v-model="email" placeholder="请输入邮箱"></el-input> <el-button type="primary" @click="checkEmail">校验邮箱</el-button> </div> </template> <script> import { reactive } from 'vue'; import { ElInput, ElButton } from 'element-plus'; import 'element-plus/lib/theme-chalk/index.css'; export default { components: { ElInput, ElButton, }, setup() { const state = reactive({ phone: '', email: '', }); const checkPhone = () => { const phoneReg = /^[1][3-9][0-9]{9}$/; if (!phoneReg.test(state.phone)) { alert('请输入正确的手机号码'); } else { alert('手机号码正确'); } }; const checkEmail = () => { const emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/; if (!emailReg.test(state.email)) { alert('请输入正确的邮箱地址'); } else { alert('邮箱地址正确'); } }; return { ...state, checkPhone, checkEmail, }; }, }; </script> ``` 3. 在模板中,使用Element Plus提供的ElInput和ElButton组件来分别接收用户输入的电话号码和邮箱地址,并且使用v-model指令来绑定到state.phone和state.email属性上。 4. 在checkPhone和checkEmail函数中,定义好需要校验的正则表达式,并且使用test方法来检查用户输入是否符合格式要求。如果不符合,弹出错误提示,否则提示正确。 通过以上步骤,就可以在Vue3结合Element Plus使用JS实现电话号码和邮箱校验了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值