uniapp-商城-40-shop 购物车 选好了 进行订单确认4 配送方式3 地址编辑

前面说了配送 和地址页面

当地址页面为空或需要添加地址时,需要添加地址。

我的地址页面有个按钮 就是添加地址

点击 添加地址 按钮 后,就会跳转到地址添加的页面

1、添加地址页面

2、添加地址文件夹以及文件的创建

3、添加地址的代码

html 复制代码
<template>
	<view class="addressForm">
		<!-- 地址编辑 -->
		<u--form
			labelPosition="top"
			:model="addressForm"
			:rules="addressRules"
			labelWidth="100"
			ref="uForm"			
		>
		
			<u-form-item
				label="姓名"
				prop="username"					
			>
				<u--input
					v-model="addressForm.username"
					placeholder="请输入姓名"
				></u--input>
			</u-form-item>
			
			
			<u-form-item
				label="联系电话"
				prop="mobile"					
			>
				<u--input
					v-model="addressForm.mobile"
					placeholder="请输入联系电话"
				></u--input>
			</u-form-item>
			
			<u-form-item
				label="详细地址"
				prop="address"					
			>
				<u--input
					v-model="addressForm.address"
					placeholder="请输入街道门牌号"
				></u--input>
			</u-form-item>
			
			<u-form-item label="是否默认">
				<u-switch v-model="addressForm.selected"
					inactiveColor="#eee"
				></u-switch>
			</u-form-item>
			
			<u-form-item></u-form-item>
			
			<u-form-item>
				<u-button type="primary" @click="onSubmit">提交</u-button>
			</u-form-item>
		
		</u--form>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				addressForm:{
					username:"",
					mobile:"",
					address:"",
					selected:false
				},
				addressRules:{
					username:[
						{
							required: true,
							message: '姓名是必填的',							
							trigger: ['blur', 'change']
						},{
							min: 2,
							max: 8,
							message: '长度在2-8个字符之间',
							trigger: ['blur', 'change']
						}
					],
					mobile:[
						{
							required: true,
							message: '电话是必填的',							
							trigger: ['blur', 'change']
						},{							
							validator: (rule, value, callback) => {								
								return uni.$u.test.mobile(value);
							},
							message: '手机号码不正确',							
							trigger: ['change','blur']
						}
					],
					address:[
						{
							required: true,
							message: '地址是必填的',							
							trigger: ['blur', 'change']
						}
					]
				}
			};
		},
		
		methods:{
			onSubmit(){
				this.$refs.uForm.validate().then(res => {
					uni.$u.toast('校验通过')
				}).catch(errors => {
					uni.$u.toast('校验失败')
				})
			}
		}
	}
</script>

<style lang="scss">
.addressForm{
	padding:30rpx;
}
</style>

4、添加地址页面解析

4.1 使用u--form 整体

Form 表单 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架

注意:

由于在nvue下,u-form名称被uni-app官方占用,在nvue页面中请使用u--form名称,在vue页面中使用u--form或者u-form均可。

html 复制代码
    <u--form
   			labelPosition="top"
			:model="addressForm"
			:rules="addressRules"
			labelWidth="100"
			ref="uForm"			
		>
    </u--form>

ref 后面使用的表单名字

labelwidth 标签宽度 就是 表头占位的长度

rules 校验规则

model 表单内容

lableposition 表单布局 左右还是上下

Form Props

参数 说明 类型 默认值 可选值
model 表单数据对象 Object - -
rules 通过ref设置,如果rules中有自定义方法等,需要使用setRules方法设置规则,见上方说明 Object|Function|Array - -
errorType 错误的提示方式,见上方说明 String message none|toast|border-bottom|none
borderBottom 是否显示表单域的下划线边框 Boolean true -
labelPosition 表单域提示文字的位置,left-左侧,top-上方 String left top
labelWidth 提示文字的宽度,单位px String | Number 45 数值 / auto
labelAlign lable字体的对齐方式 String left center / right
labelStyle lable的样式,对象形式 Object - -

4.2 表单每一条内容布局

都需要放到 u--form 具体看代码

html 复制代码
			<u-form-item
				label="姓名"
				prop="username"					
			>
				<u--input
					v-model="addressForm.username"
					placeholder="请输入姓名"
				></u--input>
			</u-form-item>

4.3 设置默认的按钮

依然要放到u--from 中的 u-from-item中

html 复制代码
			<u-form-item label="是否默认">
				<u-switch v-model="addressForm.selected"
					inactiveColor="#eee"
				></u-switch>
			</u-form-item>

4.4 提交按钮

依然要放到u--from 中的 u-from-item中

html 复制代码
            <u-form-item>
				<u-button type="primary" @click="onSubmit">提交</u-button>
			</u-form-item>

方法实现:

html 复制代码
methods:{
			onSubmit(){
				this.$refs.uForm.validate().then(res => {
					uni.$u.toast('校验通过')
				}).catch(errors => {
					uni.$u.toast('校验失败')
				})
			}
		}

4.5 数据内容

包含基本的数据以及校验规则

校验规则 就是u-view的api

实现很多校验 包含电话,邮箱等字符串的校验

test 规则校验 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架

html 复制代码
addressForm:{
					username:"",
					mobile:"",
					address:"",
					selected:false
				},
				addressRules:{
					username:[
						{
							required: true,
							message: '姓名是必填的',							
							trigger: ['blur', 'change']
						},{
							min: 2,
							max: 8,
							message: '长度在2-8个字符之间',
							trigger: ['blur', 'change']
						}
					],
					mobile:[
						{
							required: true,
							message: '电话是必填的',							
							trigger: ['blur', 'change']
						},{							
							validator: (rule, value, callback) => {								
								return uni.$u.test.mobile(value);
							},
							message: '手机号码不正确',							
							trigger: ['change','blur']
						}
					],
					address:[
						{
							required: true,
							message: '地址是必填的',							
							trigger: ['blur', 'change']
						}
					]
				}
相关推荐
yrldjsbk2 分钟前
uniapp小程序开发入门01-快速搭建一个空白的项目并预览它
uni-app
JavaDog程序狗1 小时前
【实操】uniapp纯前端搞个识别植物花草小程序
前端·vue.js·uni-app
七七小报2 小时前
uniapp-商城-42-shop 后台管理 分包
前端·uni-app
xuanjiong9 小时前
微信小程序,基于uni-app的轮播图制作,调用文件中图片
微信小程序·小程序·uni-app
flying robot9 小时前
uniapp: 低功耗蓝牙(BLE)的使用
uni-app
程序猿John9 小时前
uniapp跳转和获取参数方式
前端·javascript·uni-app
七七小报1 天前
uniapp-商城-38-shop 购物车 选好了 进行订单确认4 配送方式1
uni-app
七七小报1 天前
uniapp-商城-39-shop 购物车 选好了 进行订单确认4 配送方式2 地址页面
uni-app
G_GreenHand1 天前
uniapp 仿小红书轮播图效果
uni-app