使用uniapp.pageScrollTo方法进行页面滚动

先看看是不是你想要的:

需求:

有个填写数据的单子在提交的时候,会对必填项做校验,如果必填项没有数据的话,必填项校验生效给出提示,并且页面滚动到第一个需要填写数据的地方。

开发:

因为这个需求是后续增加的,那也不可能改变样式结构,那就在原来的基础上去写吧!

首先想到是用uniapp的内置方法pageScrollTo,这个方法可以让页面滚动到指定的位置,比较合适。

开始上手:

使用的vue3+js写法:

uni.pageScrollTo的参数:

selector使用子元素选择器:(在第二个view标签增加scrlloClass、第三个view标签增加scrollClass1类名)

  • 子元素选择器:.the-parent > .the-child

上代码:

const submit = () => {
// form表单绑定的是ref="form",因此使用使用form.value.validate方法对表单进行校验
		form.value.validate().then(res => {
		// 成功后的执行方法,即必填项都已经填写了
		}).catch(err => {
		// 失败后的方法,即有必填项没有填写
		
		 // 输出的是必填项未填写的数据信息
			console.log('err', err);
			
			// 上图中的form表单是有三个view标签,每个view标签中有多个uv-form-item标签,list数组是将第二个和第三个view标签的必填项(每个form-item标签上prop的字段)列举下来
			let list = ["a", 'b', "c", "d", "e", "f", "g", "h"]
			
			// 设置标签滚动位置
			let scrollNum = undefined
			
			// scrollObj是uni.pageScrollTo方法的参数,本文一共涉及到下面三个选项
			let scrollObj = {
				// scrollTop: 0, // 指定滚动到离顶部的距离
				// duration: 500, // 滚动动画的时长
				// selector: `.scrollClass > .uv-form-item:nth-child(${scrollNum})` // 指定滚动的元素
				duration: 500,
			}
			
			// 先判断未填写的必填项中是否有name字段,没有的话接着走
			if (err[0].field !== 'name') {
				try { // 使用try catch中断forEach循环
					list.forEach((e, i) => {
						console.log('中断forEach');
						if (e === err[0].field) {
							scrollNum = i + 1 // 指定标签元素(nth-child是从1开始)
							throw e // 抛给catch
						}
					})
				} catch (e) {
					scrollObj.selector = `.scrollClass > .uv-form-item:nth-child(${scrollNum})`
					if (e === 'name') {
					// 上图中的form表单是有三个view标签,给第三个form-item标签增加一个scrollClass1类名
						scrollObj.selector = `.scrollClass1 > .uv-form-item:nth-child(1)`
					}
				}
				console.log('scrollNum', scrollNum);
			} else {
			// 有name字段的话,将scrollTop设置为0,及滚动到页面顶部(第一个view标签,见gif动图的第一块区域)
				scrollObj.scrollTop = 0
			}
			uni.pageScrollTo(scrollObj);
		})
	}

问题解决无非就是获取必填项未填写的数组(下文称为arr),及validate方法的catch方法中的err,将必填项的字段标识放到一个新数组里面,拿到arr的第一项的field(第一个必填项的字段的标识),循环新数组,如果新数组每一项和arr的第一项的field相等的话,拿到该项索引,索引加1,用于确定滚动到该标签。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/749198.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter是app跨平台最优解吗?

哈喽,我是老刘 最近在知乎上看到这样一个问题 我们先来解释一下问题中碰到的几个现象的可能原因,然后聊聊跨平台的最优解问题 问题解释 1、跟手、丝滑问题 这个问题其实很多人是有误解的,觉得原生的就丝滑跟手 其实不是这样的 我在做Flut…

一键生成AI动画视频?Animatediff 和 ComfyUI 更配哦!

大家好我是极客菌! 之前我分享过 Animatediff 在 WebUI 中的应用,最近不是在分享 ComfyUI 嘛,那我们也来讲讲 Animatediff 在 ComfyUI 的应用。 如果从工作流和内存利用率的角度来说,Animatediff 和 ComfyUI 可能更配一些&#…

Python 语法基础二

7.常用内置函数 执行这个命令可以查看所有内置函数和内置对象(两个下划线) >>>dir(__builtins__) [__class__, __contains__, __delattr__, __delitem__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __gt…

API-元素尺寸与位置

学习目标: 掌握元素尺寸与位置 学习内容: 元素尺寸与位置仿京东固定导航栏案例实现bilibili点击小滑块移动效果 元素尺寸与位置: 使用场景: 前面案例滚动多少距离,都是我们自己算的,最好是页面滚动到某个…

【研究】美国2023年就业增长可能是假的?加州已经爆出大雷

美国就业市场可能比火热的非农数据所描绘的场面惨淡得多。 去年以来,美国劳动力市场顶着二十多年来最高的利率一路高歌猛进,让许多市场分析人士开始怀疑数据的准确性。尽管官方报告显示就业形势向好,但越来越多的证据表明,实际情…

校园圈子小程序系统搭建需求和需要哪些功能?APP小程序H5前后端源码交付

功能:小程序授权登陆,支持app双端,小程序,h5,pc端,手机号登陆,发帖,建圈子、发活动。可置顶推荐帖子,关注、粉 丝、点赞等。可作为圈子贴吧、小红书、校园社区、表白墙、…

韩国锂电池工厂火灾:行业安全警钟再次敲响

三天前,6月24日上午,韩国京畿道华城市一电池厂突发火灾,造成严重人员伤亡,其中包括多名中国籍员工。这一事件不仅令人痛心,更为全球锂电池行业安全敲响了警钟。 事发当天,电池厂内堆放锂电池成品的区域突然…

深度神经网络(dnn)--风格迁移(简单易懂)

概括 深度神经网络(DNN)在风格迁移领域的应用,实现了将一幅图像的艺术风格迁移到另一幅图像上的目标。该技术基于深度学习模型,特别是卷积神经网络(CNN),通过提取内容图像的内容特征和风格图像的…

CAD2012 网络许可和单机切换

由于公司使用的CAD2012 是网络租借许可的方式,如果许可有限,使用人数比许可数多,就会出现争抢问题。出现有些人得不到许可(遇到公司不增加许可真的很坑B,因为A抢上了可能C被迫掉了,C上去O可能掉&#xff0c…

Oracle 19C19.3 rac安装并RU升级到19.14

19C支持RU补丁安装。 下载好19.14的RU补丁 [rootrac1 soft]# ll total 9830404 -rw-r--r-- 1 grid oinstall 3059705302 Jun 18 15:26 LINUX.X64_193000_db_home.zip -rw-r--r-- 1 grid oinstall 2889184573 Jun 18 15:27 LINUX.X64_193000_grid_home.zip -rw-r--r-- 1 grid …

2024肥晨赠书活动第三期:《前端工程化:基于Vue.js 3.0的设计与实践》

文章目录 内容简介作者简介关于《前端工程化:基于Vue.js 3.0的设计与实践》文章目录文章简介《前端工程化:基于Vue.js 3.0的设计与实践》全书速览结束语 内容简介 本书以Vue.js的3.0版本为核心技术栈,围绕“前端工程化”和TypeScript的知识点…

昇思25天学习打卡营第1天|快速入门-Mnist手写数字识别

学习目标:熟练掌握MindSpore使用方法 学习心得体会,记录时间 了解MindSpore总体架构 学会使用MindSpore 简单应用时间-手写数字识别 一、MindSpore总体架构 华为MindSpore为全场景深度学习框架,开发高效,全场景统一部署特点。 …

将huggingface的大模型转换为safetensor格式

很多huggingface的大语言模型都是pytorch的格式,但是mindie需要safetensor格式,另外mindieservice加载原始的baichuan2-13b的模型出错,后来排查是bfloat16数据格式的问题,所以这次转换要一次性转为float16的格式。 上代码&#x…

在Ubuntu22.04 使用stable-diffusion-webui 秋叶整合包

背景 众所周知,赛博菩萨已经发布了windows下的整合包,开箱即用,且集成度较高。 那我为啥非要在Ubuntu下使用呢? 当然是因为主力机就是Ubuntu系统啦。而且涉及到sd webui API 的调用,在Ubuntu 下调试更加方便一点。 那…

SyntaxError: Unexpected token ‘<‘ (at chunk-vendors.fb93d34e.js:1:1)打包后页面白屏vue

本地运行一切正常,打包到线上,页面一篇空白。我确定输入路径正确。。。 控制台报错,我就开始百度,有的说清空缓存就行了,但我清空了还是这样。。。 然后我就去排查原因。看到页面请求js,但是请求的好像有点…

【项目实训】各种反爬策略及爬虫困难点总结

在这里,我总结了本次项目的数据收集过程中遇到的反爬虫策略以及一些爬虫过程中容易出现问题的地方。 user-agent 简单的设置user-agent头部为浏览器即可: 爬取标签中带href属性的网页 对于显示岗位列表的页面,通常检查其源代码就会发现&…

学习提示词工程

去年 11 月 8 日,新加坡政府科技局(GovTech)组织举办了首届 GPT-4 提示工程(Prompt Engineering)竞赛。数据科学家 Sheila Teo 最终夺冠,成为最终的提示女王(Prompt Queen)。之后&am…

苹果解压压缩包的软件 苹果如何解压压缩包

大多数苹果新用户遇到过压缩包无法解压的问题,与Windows丰富的解压软件相比,苹果电脑的解压软件虽然数量众多,但是好用的却甚少。小编今天为大家推荐几款苹果解压压缩包的软件,并详细介绍苹果如何解压压缩包的。 一、苹果解压压缩…

https网站安全证书的作用与申请办法

HTTPS网站安全证书,正式名称为超文本传输安全协议证书,是通过SSL/TLS加密协议,保障互联网用户与网站间数据交换的安全性的关键技术。 一:HTTPS网站安全证书的作用 1 消除不安全提示:未使用https协议的网站&#xff0c…

项目如何整合sentinel

1、添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifact…