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

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

一、表单

1、基础表单验证 form

bash 复制代码
<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>

优点:

简单清晰

缺点:

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

bash 复制代码
// 表单提交
			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表单验证

bash 复制代码
<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>
bash 复制代码
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

bash 复制代码
@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 限制输入数字

bash 复制代码
<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不起作用
bash 复制代码
这个type控制的其实是手机弹出输入法键盘,微信开发者工具调试看不出效果来,所以无需处理

2、下拉选择框

bash 复制代码
//结构 
 <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的使用

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

4、进度条

bash 复制代码
<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弹出选择的使用

bash 复制代码
<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>

数组中对象类型详细使用

bash 复制代码
<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

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


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

问题:

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

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

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

(1)

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

js 复制代码
index: -1, //选择的下拉列表下标
(2)

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

js 复制代码
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,则会显示"请输入"

js 复制代码
{{index === -1 ? '请输入' : selectDatas[index]}}

完整

js 复制代码
<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>
相关推荐
崔庆才丨静觅5 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60615 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了5 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅5 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅6 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅6 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment6 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅7 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊7 小时前
jwt介绍
前端
爱敲代码的小鱼7 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax