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>
相关推荐
QuantumLeap丶15 小时前
《uni-app跨平台开发完全指南》- 06 - 页面路由与导航
前端·vue.js·uni-app
用户97141718142715 小时前
uniapp页面路由
vue.js·uni-app
Kingsaj15 小时前
uni-app打包app -- 在用户首次启动 App 时,强制弹出一个“用户协议与隐私政策”的确认对话框。
服务器·ubuntu·uni-app
Vue102415 小时前
uniapp 使用renderjs 封装 video-player 视频播放器, html5视频播放器-解决视频层级、覆盖、播放卡顿
uni-app·音视频·html5
钱端工程师16 小时前
uniapp封装uni.request请求,实现重复接口请求中断上次请求(防抖)
前端·javascript·uni-app
茶憶16 小时前
uni-app app移动端实现纵向滑块功能,并伴随自动播放
javascript·vue.js·uni-app·html·scss
dcloud_jibinbin16 小时前
【uniapp】解决小程序分包下的json文件编译后生成到主包的问题
前端·性能优化·微信小程序·uni-app·vue·json
茶憶16 小时前
uniapp移动端实现触摸滑动功能:上下滑动展开收起内容,左右滑动删除列表
前端·javascript·vue.js·uni-app
蒲公英源码16 小时前
uniapp开源ERP多仓库管理系统
mysql·elementui·uni-app·php
shykevin16 小时前
uni-app x开发商城系统,小程序发布,h5发布,安卓打包
android·小程序·uni-app