❤ Uniapp使用二 ( 日常使用篇)

❤ Uniapp使用二 ( 日常使用篇)

一、表单

1、基础表单验证 form

<form @submit="formSubmit" @reset="formReset"> 
						
						<view class="uni-form-item uni-column">
							<view class="title">请选择类型{{selectvalue}}</view>
	<view>
		<uni-data-select
		  v-model="selectvalue"
		  :localdata="selectList"
		  @change="changeselect"
 ></uni-data-select>
	</view>
</view>
</form>

优点:
简单清晰

缺点:
验证起来自己写的验证规则很麻烦

// 表单提交
			formSubmit: function(e) {
				console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value))
				var formdata = e.detail.value
				uni.showModal({
					content: '表单数据内容:' + JSON.stringify(formdata),
					showCancel: false
				});
			},
			// 表单重置
			formReset: function(e) {
				console.log('清空数据')
			},

2、uni-forms表单验证

<template>
	<view>
		<uni-forms ref="form" :modelValue="formData" :rules="rules">
			<uni-forms-item label="姓名" name="name">
				<uni-easyinput type="text" v-model="formData.name" placeholder="请输入姓名" />
			</uni-forms-item>
			<uni-forms-item label="邮箱" name="email">
				<input class="input" v-model="formData.email" type="text" placeholder="请输入邮箱" @input="binddata('email',$event.detail.value)" />
			</uni-forms-item>
		</uni-forms>
		<button @click="submit">Submit</button>
	</view>
</template>
export default {
	data() {
		return {
			// 表单数据
			formData: {
				name: 'LiMing',
				email: 'dcloud@email.com'
			},
			rules: {
				// 对name字段进行必填验证
				name: {
					rules: [{
							required: true,
							errorMessage: '请输入姓名',
						},
						{
							minLength: 3,
							maxLength: 5,
							errorMessage: '姓名长度在 {minLength} 到 {maxLength} 个字符',
						}
					]
				},
				// 对email字段进行必填验证
				email: {
					rules: [{
						format: 'email',
						errorMessage: '请输入正确的邮箱地址',
					}]
				}
			}
		}
	},
	methods: {
		/**
		 * 复写 binddata 方法,如果只是为了校验,无复杂自定义操作,可忽略此方法
		 * @param {String} name 字段名称
		 * @param {String} value 表单域的值
		 */
		// binddata(name,value){
		// 通过 input 事件设置表单指定 name 的值
		//   this.$refs.form.setValue(name, value)
		// },
		// 触发提交表单
		submit() {
			this.$refs.form.validate().then(res=>{
				console.log('表单数据信息:', res);
			}).catch(err =>{
				console.log('表单错误信息:', err);
			})
		}
	}
}

3、表单单个验证未生效

uni-easyinput 在1.1.0新增 @change
在这里插入图片描述

@change="changeIdcard"

// 验证身份证号
changeIdcard(){
	console.log(this.valiFormData.cardId,'身份证');
	if(this.valiFormData.cardId!=''){
		let iphoneReg = (
			/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
		); 
		if (!iphoneReg.test(this.valiFormData.cardId)) {
			console.log('测试身份证号!');
			this.valiFormData.cardId='';
			uni.showToast({
				title:'身份证格式不正确,请重新填写!',
				icon:'none',
				duration:2000,
			})
			return false;
		}else{
			return true;
	  }
	}
},

二 、表单基础组件

1、输入框

uniapp input 限制输入数字

<input class="uni-input info-content input-len" type="text" maxlength="30" @input="replaceInput" v-model="value" />


replaceInput(event){
    const screeningStr = /[^\d]/g;      //想禁止什么类型,在这里替换正则就可以了
    if(screeningStr.test(event.target.value)){
          this.value = event.target.value.replace(screeningStr,'');
    }eles{
          this.value = event.target.value;
    }
}


只能输入数字
const inputType = /[^\d]/g      
只能输入字母
const inputType = /[^a-zA-Z]/g      
只能输入数字和字母
const inputType =/[\W]/g
只能输入小写字母
const inputType =/[^a-z]/g
只能输入大写字母
const inputType =/[^A-Z]/g
只能输入数字和字母和下划线
const inputType =/[^\w_]/g //下划线也可以改成%
只能输入中文
const inputType =/[^\u4E00-\u9FA5]/g
只能输入数字和小数点
const inputType =/[^\d.]/g

输入框问题

uniapp微信小程序input的type设置成number不起作用
这个type控制的其实是手机弹出输入法键盘,微信开发者工具调试看不出效果来,所以无需处理

2、下拉选择框

//结构 
 <view>
   <uni-data-select
  			v-model="type"
			:localdata="range"
			@change="change"
			:clear="false"
			label="消息类型"
			placeholder="请选择"
			emptyText="暂无类型"
	></uni-data-select>
</view>

//数据
value: 0,
range: [
	{ value: 1, text: "系统信息" },
	{ value: 2, text: "医生信息" },
],


//下拉方法
change(e) {
	console.log("e:", e);
},

3、上传组件 u-upload的使用

<u-upload ref="uploads" 
	@on-choose-complete="uploadImage" 
	:preview-full-image="false"
	:auto-upload="false" upload-text="添加" 
	max-count="1">
</u-upload>

4、进度条

<progress :percent="progressvalue" show-info stroke-width="3" />

progressvalue:60,
backgroundColor:未选择的进度条的颜色
show-info 展示右侧提示
stroke-width	Number	6	进度条线的宽度,单位px
duration="40" 进度增加1%所需毫秒数
border-radius  圆角大小

5、picker弹出选择的使用

<template>
  <view>
    <text>选择器:{{ selectedValue }}</text>
    <picker v-model="selectedValue" :range="rangeData" range-key="id" @change="handleChange"></picker>
  </view>
</template>

<script>
export default {
  data() {
    return {
      selectedValue: '', // 绑定选中的值
      rangeData: [
        { id: 1, value: '选项1' },
        { id: 2, value: '选项2' },
        { id: 3, value: '选项3' }
      ]
    };
  },
  methods: {
    handleChange(event) {
      console.log('选中的选项:', event.target.value);
    }
  }
};
</script>

数组中对象类型详细使用

<picker  
	:value="selectedType" 
	:range="rangeData"  
	range-key="value"  
	@change="bindPickerChange">
<view class="uni-input">{{rangeData[selectedType].value}}</view>
</picker>




// 1 selectedType 相当于下标
selectedType: '', // 绑定选中的值


// 2 rangeData 数据 

rangeData: [
			{ id: 1, value: '成人1' },
			{ id: 2, value: '儿童2' },
			{ id: 3, value: '孕妇3' }
],


// 3  事件
bindPickerChange(event) {
    console.log('选中的选项:', event.target.value);
	this.selectedType= event.target.value;
},

三、需求

1、uniapp提示信息之后再跳转页面

记载提示 uni.showLoading


// 加载提示
uni.showLoading({
    title: '提示信息',
    mask: false, // 是否可以
});


//关闭弹窗
this.hideLoading();

问题:

uniapp提示成功之后再跳转页面
uni.showToast({
	title: "hello world",
	duration: 2000
})

setTimerout(() => {
	uni.navigateTo({
		url: "/pages/index/index"
	})
}, 2000)

2、 uni-app:实现picker下拉列表的默认值设置

(1)

在data中将index的初始值设置为-1,表示未选择任何选项:

index: -1, //选择的下拉列表下标
(2)

在bindPickerChange事件处理函数中添加条件判断。如果选择的值是-1,则将this.index设置为"请输入",否则将其设置为选择的下标值

bindPickerChange8: function(e) {

         if (e.detail.value === -1) {

                this.index8 = '请输入';

        } else {

                this.index8 = e.detail.value;//更新选择的下拉下标 

                this.ifname = this.selectDatas8[e.detail.value]; // 更新选择的数据

        }

        // 其他逻辑...

}

(3)

在模板中使用{{selectDatas[index]}}来显示选择的值。如果index8为-1,则会显示"请输入"

{{index === -1 ? '请输入' : selectDatas[index]}}

完整

<template>
	<view>
		<picker style="border:1px solid black" name="ifname" @change="bindPickerChange8" :value="index8" :range="selectDatas8">
		  <view>
		    {{index8 === -1 ? '请输入' : selectDatas8[index8]}}
		  </view>
		</picker>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				index8: -1, //选择的下拉列表下标,
				selectDatas8: ['ETH0', 'ETH1', 'WLAN1', 'WLAN2'], //下拉数组
				ifname: '', //网口选择
			};
		},
		methods: {
			//下拉列表选择模式
			bindPickerChange8: function(e) {
				console.log('picker发送选择改变,携带下标为', e.detail.value)
				console.log('picker发送选择改变,携带值为' + this.selectDatas8[e.detail.value]) 
				if (e.detail.value === -1) {
				    this.index8 = '请输入';
				  } else {
				    this.index8 = e.detail.value;//更新选择的下拉下标  
				    this.ifname = this.selectDatas8[e.detail.value]; // 更新选择的数据
				  }
			},
		},
	};
</script>
<style>
 
</style>

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

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

相关文章

VC++中使用OpenCV对原图像中的四边形区域做透视变换

VC中使用OpenCV对原图像中的四边形区域做透视变换 最近闲着跟着油管博主murtazahassan&#xff0c;学习了一下LEARN OPENCV C in 4 HOURS | Including 3x Projects | Computer Vision&#xff0c;对应的Github源代码地址为&#xff1a;Learn-OpenCV-cpp-in-4-Hours 视频里面讲…

【ubuntu】ubuntu 20.04安装docker,使用nginx部署前端项目,nginx.conf文件配置

docker 官网&#xff1a;Install Docker Engine on Ubuntu 一、安装docker 1.将apt升级到最新 sudo apt update2.使用apt安装 docker 和 docker-compose &#xff08;遇到提示输入y&#xff09; sudo apt install docker.io docker-compose3.将当前用户添加到docker用户组 …

网页设计(二)格式化文本、段落与列表

一、孔融让梨 【思政素材】 孔融&#xff0c;字文举&#xff0c;东汉时期中国山东曲阜人&#xff0c;是孔子的第二十世孙&#xff0c;是中国古代东汉末文学家。 孔融四岁的时候&#xff0c;和哥哥吃梨&#xff0c;总是拿小的吃。有人问他为什么这么做。他回答说&#xff1a;“…

Qt6入门教程 7:信号和槽机制(原理和优缺点)

目录 一.简介 二.信号和槽 1.信号和槽机制是类型安全的 2.信号和槽是松散耦合的 三.信号&#xff08;signals&#xff09; 四.槽&#xff08;slots&#xff09; 五.信号与槽的简单模拟 六.第三方信号槽实现 七.在Qt中使用第三方的Signals和Slots 八.总结一下优点和缺…

搜维尔科技:SenseGlove Nova 2力反馈技术手套,虚拟培训的沉浸感达到新高度!

SenseGlove Nova 2-虚拟培训的沉浸感达到新高度&#xff01; 通过集成主动接触反馈&#xff0c;Nova 2 使用户能够在手掌中感知虚拟现实物体的感觉。虚拟训练、研究和多人互动现在感觉比以往更加自然。这项创新增强了与整个手掌接触的任何虚拟物体的真实感。使用第一款也是唯一…

select子句简单查询

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 目录 数据查询 起别名 连接 ​编辑 去重 ​编辑 另外补充几个不常用的命令 如果要进行查询,那么需要使用数据操纵语言&#xff08;Data Manipulation Language&#xff0c;DML&am…

mysql 下载和安装和修改MYSQL8.0 数据库存储文件的路径

一、第一步:下载步骤 下载链接&#xff1a;MySQL :: Download MySQL Installer 选择版本8.0.35&#xff0c;社区版&#xff0c; 点击 Download 下载 安装包 二、第二步:安装步骤 添加环境变量&#xff0c;C:\Program Files\MySQL\MySQL Server 8.0\bin 可以点开MySQL 8.0 Co…

三、基础篇 vue Class与Style绑定

操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute&#xff0c;所以我们可以用 v-bind 处理它们&#xff1a;只需要通过表达式计算出字符串结果即可。不过&#xff0c;字符串拼接麻烦且易错。因此&#xff0c;在将 v-bind 用于 class 和 style…

小程序基础学习(页面跳转传参)

目录 正向传参 原理&#xff1a;直接在url里面拼接参数即可 接受参数 ​编辑 已经跳转到的页面用onLoad函数来接受即可然后写回页面展示即可 逆向传参 原理&#xff1a;通过使用 getCurrentPages()这个方法来获取返回页面列表&#xff0c;然后再用页面.setData&#xff…

弟12章 网络编程

文章目录 网络协议概述 p164TCP协议与UDP协议的区别 p165TCP服务器端代码的编写 p166TCP服务器端流程 TCP客户端代码的编写 p167TCP客户端流程主机和客户端的通信流程 tcp多次通信服务器端代码 p168TCP多次通信客户端代码 p169UDP的一次双向通信 p170udp通信模型udp接收方代码u…

【C语言】ipoib驱动 - ipoib_cm_handle_rx_wc_rss

一、ipoib_cm_handle_rx_wc_rss函数定义 void ipoib_cm_handle_rx_wc_rss(struct net_device *dev, struct ib_wc *wc) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_cm_rx_buf *rx_ring;unsigned int wr_id wc->wr_id & ~(IPOIB_OP_CM | IPOIB_OP_RE…

Spring Boot框架中Controller层API接口如何支持使用多个@RequestBody注解接受请求体参数

一、前言 众所周知&#xff0c;在Spring Boot框架中&#xff0c;Controller层API接口编码获取请求体参数时&#xff0c;在参数上会使用RequestBody注解&#xff1b;如果一次请求中&#xff0c;请求体参数携带的内容需要用多个参数接收时&#xff0c;能不能多次使用RequestBody…

通过OpenIddict设计一个授权服务器02-创建asp.net项目

在这一部分中&#xff0c;我们将创建一个ASPNET核心项目&#xff0c;作为我们授权服务器的最低设置。我们将使用MVC来提供页面&#xff0c;并将身份验证添加到项目中&#xff0c;包括一个基本的登录表单。 创建一个空的asp.net core项目 正如前一篇文章中所说&#xff0c;授权…

智能时代,让AI为你撰写专业应用文

大家好我是在看&#xff0c;记录普通人学习探索AI之路。 何谓应用文&#xff1f;简单来说&#xff0c;应用文是指在日常生活中以及工作中撰写的&#xff0c;旨在传递信息、处理事务的一种文体类型。其范畴广泛&#xff0c;涵盖了诸如请假条、通知书、辞职信、检查报告、欠条、…

【控制篇 / 分流】(7.4) ❀ 01. 对指定IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带&#xff0c;一条ADSL拨号用来上网&#xff0c;一条移动SDWAN&#xff0c;已经连通总部内网服务器&#xff0c;领导要求&#xff0c;只有访问公司服务器IP时走移动SDWAN&#xff0c;其它访问都走ADSL拨号&#xff0c;如果你是管理员&#xff0c;你知道有…

vuex前端开发,getters是什么?怎么调用?简单的案例操作

vuex前端开发,getters是什么&#xff1f;怎么调用&#xff1f;简单的案例操作&#xff01; 下面通过一些简单的案例&#xff0c;来了解一下&#xff0c;vuex当中的getters到底是什么意思&#xff0c;有哪些实际的操作案例。 Vuex的getters主要用于对store中的state进行计算或过…

LNMP环境下综合部署动态网站

目录 LNMP部署--nginx 搭建mysql数据库 安装mysql的过程&#xff1a; 部署PHP&#xff1a; ​编辑​编辑php的配置文件在哪 wordpress程序安装 LNMP部署--nginx 纯净--联网状态 环境变量中没有nginx 安装形式的选择&#xff1a; yum安装&#xff1a;自动下载安装包及…

2024年美赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

Qt/QML编程之路:slider(34)

滑条slider&#xff0c;有时也成为进度条progressbar&#xff0c;在GUI界面中也是经常用到的。 import QtQuick 2.9 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.2ApplicationWindow {id:rootvisible: truewidth: 1920height: 720//title: qsTr("Hello World&q…

网络安全中的“三高一弱”和“两高一弱”是什么?

大家在一些网络安全检查中&#xff0c;可能经常会遇到“三高一弱”这个说法。那么&#xff0c;三高一弱指的是什么呢&#xff1f; 三高&#xff1a;高危漏洞、高危端口、高风险外连 一弱&#xff1a;弱口令 一共是4个网络安全风险&#xff0c;其中的“高危漏洞、高危端口、弱…