uniapp 设置form表单以及验证密码

事例:

代码:

复制代码
<template>
	<view class="changePwd">
		<view class="login_form">
			<view class="title">
				<view>
					修改密码
				</view>
				<view>
					您好,请在下方输入原密码和新密码进行更改密码
				</view>
			</view>
			<uni-forms :modelValue="form" ref="loginForm" :rules="rules">
				<uni-forms-item name="oldPassword">
					<view class="itemContent">
						<text class="itemTextStyle">原密码:</text>
						<input class="itemInputStyle" type="text" v-model="form.oldPassword" placeholder="请输入内容" />
					</view>
					<!--分割线-->
					<view style="height: 1px; background-color: #ccc;"></view>
				</uni-forms-item>
				
				<uni-forms-item name="newPassword">
				<view class="itemContent">
					<text class="itemTextStyle">新密码:</text>
					<input class="itemInputStyle" type="text" v-model="form.newPassword" placeholder="请输入内容" />
				</view>
				<!--分割线-->
				<view style="height: 1px; background-color: #ccc;"></view>
				</uni-forms-item>
				
				<uni-forms-item name="confirmPassword">
				<view class="itemContent">
					<text class="itemTextStyle">确认密码:</text>
					<input class="itemInputStyle" type="text" v-model="form.confirmPassword" placeholder="请输入内容" />
				</view>
				<!--分割线-->
				<view style="height: 1px; background-color: #ccc;"></view>
				</uni-forms-item>
				
				<view class="updateBtn">
					<button class="button" @click="updateForm">修改密码</button>
				</view>
			</uni-forms>
		</view>
	</view>
</template>
<script>
import {updatePassword} from '@/api/api.js';

	export default {
		name:"changePassword",
		data(){
			return{
				form:{
					oldPassword:'',
					newPassword:'',
					confirmPassword:''
				},
				rules:{
					// 旧密码规则限制
					oldPassword: {
						rules: [
							{required: true,errorMessage: '请输入原密码', trigger: 'blur'},
							{minLength: 1,maxLength: 11, errorMessage: '密码长度为1~11位', trigger: 'change'}
						]
					},
					// 新密码规则限制
					newPassword: {
						rules: [
							{required: true,errorMessage: '请输入新密码', trigger: 'blur'},
							{minLength: 1,maxLength: 11, errorMessage: '密码长度为1~11位', trigger: 'change'}
						]
					},
					// 确认密码规则限制
					confirmPassword: {
						rules: [
							{required: true,errorMessage: '确认密码不能为空'},
							{
								validateFunction: (rule, value, data) => data.newPassword === value,
								errorMessage: '两次输入的密码不一致'
							}
						]
					},
				},
			}
		},
		methods:{
			updateForm(){
				// 验证
				this.$refs.loginForm.validate().then(res=>{
					//console.log("res",res);			
				}).catch(err=>{
					console.log('表单数据错误信息:', err);
					/* uni.showToast({
						title:'登录失败',
						icon:'error',
					}) */
				});
				
				this.jumpPage(this.form);
			},
			async jumpPage(data){// 跳转页面
				
				const res = await updatePassword(data);
				if(res.success){
					uni.navigateBack({
					  url: '/pages/my/my'
					});
				}else{
					uni.showToast({
						title: "修改失败",
						icon: "error"
					}) 
				}
			
				
				
			},
		}
	}
	
	
</script>
<style lang="scss" scoped>
	uni-page-body {
		height: 100%;
	}
	
	.custom-font {
	    font-size: 16px; /* 设置字体大小 */
	    font-weight: bold; /* 设置字体粗细 */
	    color: black; /* 设置字体颜色 */
		align-items: center;
	    /* 可以继续添加其他字体样式 */
	  }

	.changePwd {
		overflow: hidden;
	}
	
	.login_form {
		/* background-color: rgba(0, 0, 0, 0.4); */
		border-radius: 5rpx;
		padding: 10rpx;
		margin: 3vw 20rpx;
	}

	.title view:nth-child(1) {
		font-size: 60rpx;
		margin-bottom: 8rpx;
	}
	
	.title view:nth-child(2) {
		font-size: 20rpx;
		margin-bottom: 30rpx;
		color: #b1b1b1;
	}

	.itemContent{
		display: flex;
		background-color: #ffffff;
		padding: 2vw 2vw;
		padding-top: 10rpx;
		box-sizing: border-box;
		align-items: center;
		.itemTextStyle{
			width: 90rpx;
			font-size: 16rpx;
			text-align: center;
		}
		.itemInputStyle{
			width: 90%;
		}
	}
	
	.updateBtn {
		margin-top: 140rpx;
		margin-left: 50rpx;
		margin-right: 50rpx;
		
		button {
			background-color: #66CD00;
			color: white;
		}
		
	}

	

</style>
相关推荐
tedcloud1231 小时前
RTK部署教程:构建稳定的AI Workflow环境
服务器·javascript·人工智能·typescript·ocr
ZC跨境爬虫2 小时前
跟着 MDN 学CSS day_16:(深入掌握背景与边框的艺术)
前端·css·ui·html·tensorflow
遗憾随她而去.2 小时前
uniapp App平台 真机运行
uni-app
愚者Pro4 小时前
Flutter Widget组件学习(专为 Uniapp 转 Flutter 定制)
vue.js·学习·flutter·uni-app
道里4 小时前
花了 5 万刀用 AI 写代码之后,这是我的全部经验
前端·人工智能
Royzst5 小时前
xml知识点
java·服务器·前端
IT_陈寒5 小时前
React useEffect闭包陷阱差点把我整失业了
前端·人工智能·后端
kyriewen6 小时前
推行AI写代码一年后,Code Review变成了新的加班理由
前端·ai编程·cursor
前端环境观察室6 小时前
给 Agent Browser Workflow 加一层可观测性:Trace、Snapshot 和 Review Queue
前端
柒瑞6 小时前
Superpowers结合Claude code浅实战
前端