uniapp-form表单

javascript 复制代码
<template>
	<view class="ptb-20 plr-30 bg min100">
		<view class="bg-white radius-20 pd-30">
			<view class="bold mt-30 mb-50 size-32">选择方式:</view>
			<u--form labelPosition="left" :model="form" :rules="rules" ref="uForm">
				<u-form-item label="题量" prop="number" @click="showPop(1)">
					<u--input v-model="form.number" disabled disabledColor="#ffffff" placeholder="请选择做题数量"
						border="none"></u--input>
					<u-icon slot="right" name="arrow-right"></u-icon>
				</u-form-item>
				<u-form-item label="模式" prop="mode" @click="showPop(2)">
					<u--input v-model="form.mode" disabled disabledColor="#ffffff" placeholder="请选择做题模式" border="none"></u--input>
					<u-icon slot="right" name="arrow-right"></u-icon>
				</u-form-item>
				<u-form-item label="排序" prop="order">
					<u-radio-group v-model="form.order" placement="row">
						<u-radio class="mr-20" label="顺序" name='0'></u-radio>
						<u-radio label="降序" name='1'></u-radio>
					</u-radio-group>
				</u-form-item>
			</u--form>
			<u-action-sheet :show="show" :actions="actions" title="请选择" @close="close" @select="confirmSelect">
			</u-action-sheet>

			<view class="flex mt-120">
				<u-button @click="back" class="mr-120" text="返回主页"></u-button>
				<u-button @click="toAnswer" type="primary" text="开始练习"></u-button>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				show: false,
				type: null, // 1数量 2模式
				form: {
					number: '',
					mode: '',
					order: '0'
				},
				actions: [],
				rules: {
					'number': {
						type: 'number',
						required: true,
						message: '请选择做题数量',
						trigger: ['blur', 'change']
					},
					'mode': {
						type: 'string',
						required: true,
						message: '请选择做题模式',
						trigger: ['blur', 'change']
					},
				},
			};
		},
		methods: {
			showPop(type) {
				this.type = type
				this.show = true
				if (type == 1) {
					this.actions = [{
							name: 5,
						},
						{
							name: 10,
						},
						{
							name: 15,
						}, {
							name: 20,
						},
					]
				} else {
					this.actions = [{
							name: '题目难度',
						},
						{
							name: '做错时间',
						},
						{
							name: '随机',
						},
					]
				}
			},
			close() {
				this.show = false
				this.type = null
			},
			confirmSelect(e) {
				this.form[this.type == 1 ? 'number' : 'mode'] = e.name
				this.$refs.uForm.validateField(this.type == 1 ? 'number' : 'mode')
			},
			toAnswer() {
				this.$refs.uForm.validate().then(res => {
					uni.navigateTo({
						url: "/pages/subject/answerItem?type=3&query=" + encodeURIComponent(JSON.stringify(this.form))
					})
				}).catch(errors => {})

			},
			back() {
				uni.navigateBack()
			},
		},
		onReady() {
			//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
			this.$refs.uForm.setRules(this.rules)
		},
	};
</script>
相关推荐
学会煎墙7 小时前
使用uniapp——实现微信小程序的拖拽排序(vue3+ts)
微信小程序·uni-app·vue·ts
淡淡蓝蓝8 小时前
uni-app小程序往飞书多维表格写入内容(包含图片)
小程序·uni-app·飞书
晨枫阳9 小时前
uniapp兼容问题处理总结
前端·vue.js·uni-app
iOS阿玮9 小时前
苹果 Swift 安卓SDK上线,用一套 Swift 代码开发安卓 App 成为可能!
uni-app·app·apple
2501_9159214310 小时前
iOS混淆与IPA加固全流程(iOS混淆 IPA加固 Ipa Guard实战)
android·ios·小程序·https·uni-app·iphone·webview
liusheng10 小时前
腾讯地图 SDK 接入到 uniapp 的多端解决方案
前端·uni-app
游戏开发爱好者810 小时前
iOS 26 App 开发阶段性能优化 从多工具协作到数据驱动的实战体系
android·ios·小程序·uni-app·iphone·webview·1024程序员节
2501_9151063210 小时前
深入剖析 iOS 26 系统流畅度,多工具协同监控与性能优化实践
android·ios·性能优化·小程序·uni-app·cocoa·iphone
游戏开发爱好者814 小时前
iOS 26 App 查看电池寿命技巧,多工具组合实践指南
android·macos·ios·小程序·uni-app·cocoa·iphone
xiaohe060114 小时前
🚀 拥抱 create-uni,一行命令轻松集成 Uni ECharts!
vue.js·uni-app·echarts