Vue3 -注册表单
本文最后更新于268 天前,其中的信息可能已经过时,如有错误请发送邮件到liumiao0429@foxmail.com

视图预览

完整代码

<template>
  <div class="container">
    <h2>国货之光登录注册</h2>
    <div class="box">
      <div class="item">
        <label for="username">用户名:</label>
        <input type="text" id="username" class="txtInput txt260" v-model.lazy="username">
        <div v-if="errorFlag === 1" class="error">{{ tips[0] }}</div>
      </div>
      <div class="item">
        <label for="password">密码:</label>
        <input type="password" id="password" class="txtInput txt260" v-model.lazy="password">
        <div v-if="errorFlag === 2" class="error">{{ tips[1] }}</div>
      </div>
      <div class="item">  
        <label for="confirmPassword">确认密码:</label>
        <input type="password" id="confirmPassword" class="txtInput txt260" v-model.lazy="confirmPassword">
        <div v-if="errorFlag === 3" class="error">{{ tips[2] }}</div>
      </div>
      <div class="item">
        <label for="email">邮箱:</label>
        <input type="text" id="email" class="txtInput txt260" v-model.lazy="email">
        <div v-if="errorFlag === 4" class="error">{{ tips[3] }}</div>
      </div>
      <div class="item">
        <input type="checkbox" id="regree" class="check" v-model="regree">我已阅读并同意《用户协议》
      </div>
      <div class="item">
        <button type="button" class="btn" @click="submit">注册</button>
      </div>
    </div>
  </div>
</template>

<script>  
import { reactive, toRefs, watch } from 'vue';

export default {
  setup() {
    const data = reactive({
      username: '',
      password: '',
      confirmPassword: '',
      email: '',
      regree: false,
      tips: ["用户名不能包含特殊符号", "6~12位字符包括数字、字母、符号", "确认密码不一致", "邮箱格式不正确"],
      errorFlag: 0
    });

    const validateUsername = () => {
      const reg = /^[a-zA-Z0-9_-]+$/;
      if (!reg.test(data.username)) {
        data.errorFlag = 1;
      } else {
        data.errorFlag = 0;
      }
    };

    const validatePassword = () => {
      const reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/;
      if (!reg.test(data.password)) {
        data.errorFlag = 2;
      } else {
        data.errorFlag = 0;
      }
    };

    const validateConfirmPassword = () => {
      if (data.password !== data.confirmPassword) {
        data.errorFlag = 3;
      } else {
        data.errorFlag = 0;
      }
    };

    const validateEmail = () => {
      const reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
      if (!reg.test(data.email)) {
        data.errorFlag = 4;
      } else {
        data.errorFlag = 0;
      }
    };

    const submit = () => {
      if (!data.username) {
        data.errorFlag = 1;
        return;
      }
      if (!data.password) {
        data.errorFlag = 2;
        return;
      }
      if (data.password !== data.confirmPassword) {
        data.errorFlag = 3;
        return;
      }
      if (!data.email) {
        data.errorFlag = 4;
        return;
      }
      if (!data.regree) {
        alert('请阅读并同意用户协议');
        return;
      }
      // 提交表单的逻辑
      console.log('表单已提交');
    };

    watch(() => data.username, validateUsername);
    watch(() => data.password, validatePassword);
    watch(() => data.confirmPassword, validateConfirmPassword);
    watch(() => data.email, validateEmail);

    return {
      ...toRefs(data),
      submit
    };
  }
};
</script>

<style>
.container {
  text-align: center;
  padding: 20px;
}

.box {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-top: 20px;
}

.item {
  margin-bottom: 10px;
}

.txtInput {
  padding: 5px;
  font-size: 16px;
}

.error {
  color: red;
  font-size: 14px;
}

.check {
  margin-right: 10px;
}

.btn {
  padding: 10px 20px;
  font-size: 16px;
  background-color: #4CAF50;
  color: white;
  border: none;
  cursor: pointer;
}

.btn:hover {
  background-color: #45a049;
}
</style>

呈上拙作,望不吝赐教 --LM
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装