我的第一个项目(四):(前端)发送请求以及表单校验
  6dLT7EsVU3rP 2023年11月01日 100 0
Vue

好家伙,本篇将继续完善前端界面

 

效果展示:

1.注册登陆

(后端已启动)

 

 

 

 

2.注册表单验证

(前端实现的表单验证)

 

 

 

 

在此之前:

我的第一个项目(二):使用Vue做一个登录注册界面 - 养肥胖虎 - 博客园 (cnblogs.com)

后端部分:

我的第一个项目(三):注册登陆功能(后端) - 养肥胖虎 - 博客园 (cnblogs.com)

 

1.前端发送网络请求(axios)

项目目录:

 

Mylogin.vue文件:

<template> <div class="login-container"> <div class="login-box"> <!-- 头像区域 --> <div class="text-center avatar-box"> <img src="../assets/logo.png" class="img-thumbnail avatar" alt=""> </div> <!-- 表单区域 --> <div class="form-login p-4"> <!-- 登录名称 --> <div class="form-group form-inline"> <label for="username">账号:</label> <input type="text" class="form-control ml-2" id="username" placeholder="请输入账号" autocomplete="off" v-model.trim="loginForm.loginName"/> </div> <!-- 登录密码 --> <div class="form-group form-inline"> <label for="password">密码:</label> <input type="password" class="form-control ml-2" id="password" placeholder="请输入密码" v-model.trim="loginForm.password"/> </div> <!-- 登录和重置按钮 --> <div class="form-group form-inline d-flex justify-content-end"> <button type="button" class="btn btn-secondary mr-2" @click="toregister">去注册</button> <button type="button" class="btn btn-primary" @click="login">登录</button> </div> </div> </div> </div> </template> <script> export default { name: 'MyLogin', data() { return { loginForm: { loginName: '', password: '' } } }, methods: { login() { // console.log('submit!',this.loginForm);  this.axios.post('http://localhost:3312/sys-user/login',this.loginForm).then((resp)=>{ console.log(resp); let data = resp.data; if(data.success){ this.loginForm= {}; this.$message({ message: '登陆成功!!!', type: 'success' }); this.$router.push({path:'/Home'}) } else { console.log(data) } }) }, toregister(){ this.$router.push('/register') }, } } </script> <style lang="less" scoped> .login-container { background-color: #35495e; height: 100%; .login-box { width: 400px; height: 250px; background-color: #fff; border-radius: 3px; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); box-shadow: 0 0 6px rgba(255, 255, 255, 0.5); .form-login { position: absolute; bottom: 0; left: 0; width: 100%; box-sizing: border-box; } } } .form-control { flex: 1; } .avatar-box { position: absolute; width: 100%; top: -65px; left: 0; .avatar { width: 120px; height: 120px; border-radius: 50% !important; box-shadow: 0 0 6px #efefef; } } </style>

 

MyRegister.vue文件:

<template> <div class="login-container"> <div class="login-box"> <!-- 头像区域 --> <div class="text-center avatar-box"> <img src="../assets/logo.png" class="img-thumbnail avatar" alt=""> </div> <!-- 表单区域 --> <div class="form-login p-4"> <!-- 登录名称 --> <!--.trim用于去除首位空格 --> <div class="form-group form-inline"> <label for="username">账户:</label> <input type="text" class="form-control ml-2" id="username" placeholder="请输入昵称" autocomplete="off" v-model.trim="ruleForm.loginName" /> </div> <!-- 登录昵称 --> <div class="form-group form-inline"> <label for="password">昵称:</label> <input type="name" class="form-control ml-2" id="name" placeholder="请输入手机号" v-model.trim="ruleForm.name" /> </div> <!-- 登录密码 --> <div class="form-group form-inline"> <label for="password">密码:</label> <input type="password" class="form-control ml-2" id="password" placeholder="请输入登录密码" v-model.trim="ruleForm.password" /> </div> <!-- 确认密码 --> <div class="form-group form-inline"> <label for="password">确认密码:</label> <input type="trypassword" class="form-control ml-2" id="password" placeholder="请再次输入登录密码" v-model.trim="ruleForm.checkPass" /> </div> <!-- 登录和重置按钮 --> <div class="form-group form-inline d-flex justify-content-end"> <button type="button" class="btn btn-secondary mr-2" @click="backlogin">返回登陆界面</button> <button type="button" class="btn btn-primary" @click="submitForm(ruleForm)">注册</button> </div> </div> </div> </div> </template> <script> export default { name: 'MyRegister', data() { return { ruleForm: { loginName: '', password: '', name: '', checkPass: "" }, } }, methods: { backlogin() { this.$router.push('/login') return }, submitForm(ruleForm) { //校验部分 if (this.ruleForm.password != this.ruleForm.checkPass) { this.$message({ message: '两次输入密码不一致!!!', type: 'error' }); } else if(this.ruleForm.loginName==""){ this.$message({ message: '请输入账户!!!', type: 'error' }); } else if(this.ruleForm.name==""){ this.$message({ message: '请输入昵称!!!', type: 'error' }); } else if(this.ruleForm.password==""){ this.$message({ message: '请输入密码!!!', type: 'error' }); } else { this.axios.post('http://localhost:3312/sys-user/register', this.ruleForm).then((resp) => { console.log(resp); let data = resp.data; console.log(data); if (data.success) { this.ruleForm = {}; this.$message({ message: '恭喜你,注册成功,点击去登陆按钮进行登陆吧!!!', type: 'success' }); } }) this.$router.push({ path: '/login' }) } }, } } </script> <style lang="less" scoped> .login-container { background-color: #35495e; height: 100%; .login-box { width: 400px; height: 320px; background-color: #fff; border-radius: 3px; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); box-shadow: 0 0 6px rgba(255, 255, 255, 0.5); .form-login { position: absolute; bottom: 0; left: 0; width: 100%; box-sizing: border-box; } } } .form-control { flex: 1; } .avatar-box { position: absolute; width: 100%; top: -65px; left: 0; .avatar { width: 120px; height: 120px; border-radius: 50% !important; box-shadow: 0 0 6px #efefef; } } </style>

 

请求部分:

{ //发起网络请求, this.axios.post('http://localhost:3312/sys-user/register', this.ruleForm).then((resp) => { console.log(resp); let data = resp.data; console.log(data); //检验注册是否成功 if (data.success) { //清空表单数据 this.ruleForm = {}; //发送成功通知  this.$message({ message: '恭喜你,注册成功,点击去登陆按钮进行登陆吧!!!', type: 'success' }); } }) this.$router.push({ path: '/login' }) }

 

2.表单验证:

if (this.ruleForm.password != this.ruleForm.checkPass) { this.$message({ message: '两次输入密码不一致!!!', type: 'error' }); } else if(this.ruleForm.loginName==""){ this.$message({ message: '请输入账户!!!', type: 'error' }); } else if(this.ruleForm.name==""){ this.$message({ message: '请输入昵称!!!', type: 'error' }); } else if(this.ruleForm.password==""){ this.$message({ message: '请输入密码!!!', type: 'error' }); }

这个没什么好解释的,就是很简单的验证

如果使用的是组件的表单(比如:element之类的)也可以编辑相应的表单验证方法(规则)

当然,自己手写也没什么问题

 

 

补充:数据库建表

(前面好像一直都忘了)

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  gYl4rku9YpWY   2024年05月17日   59   0   0 Vue
  JZjRRktyDDvK   2024年05月02日   85   0   0 Vue
  VlNAKfyhjjp9   2024年04月30日   81   0   0 Vue
  JNTrZmaOQEcq   2024年04月30日   58   0   0 Vue
  onf2Mh1AWJAW   2024年05月17日   63   0   0 Vue
  3A8RnFxQCDqM   2024年05月17日   59   0   0 Vue
6dLT7EsVU3rP