uview表单,身份证,键盘,实时验证

<u-form-item label="身份证号" prop="card" ref="card">
	<u-input v-model="form.card" placeholder="请输入身份证号" @click="keyCardShow = true" />
	<u-keyboard ref="uKeyboardCard" mode="card" v-model="keyCardShow" @change="valChangeCard" @backspace="backspaceCard" :mask="false">
    </u-keyboard>
</u-form-item>
        	rules: {
					card: [{
							required: true,
							message: '请输入身份证',
							trigger: ['blur','change'],
						},
						{
							// 自定义验证函数
							validator: (rule, value, callback) => {
								// 返回true表示校验通过,返回false表示不通过
								return this.$u.test.idCard(value)
							},
							message: '身份证不正确',
							// 触发器可以同时用blur和change
							trigger: ['blur','change'],
						}
					],
				}
            valChangeCard(val) {
				// 将每次按键的值拼接到value变量中,注意+=写法
				this.form.card += val;
				this.triggerSingleFieldValidate("card")
			
			},
			// 退格键被点击
			backspaceCard() {
				// 删除value的最后一个字符
				if (this.form.card.length) this.form.card = this.form.card.substr(0, this.form.card.length - 1);
				this.triggerSingleFieldValidate("card")
			},
			//验证
			triggerSingleFieldValidate(refName) {
				setTimeout(()=>{
					this.$refs[refName].onFieldChange()
				},200)
			}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uview form组件提供了一些表单验证的方法,可以在组件上设置验证规则。 1. 设置验证规则 在form组件上设置rules属性,rules属性是一个数组,数组中每个对象表示一个表单项的验证规则。例如: ``` <template> <u-form :rules="rules"> <u-form-item label="姓名" prop="name"> <u-input v-model="form.name"></u-input> </u-form-item> <u-form-item label="年龄" prop="age"> <u-input v-model="form.age"></u-input> </u-form-item> </u-form> </template> <script> export default { data() { return { form: { name: '', age: '' }, rules: [ { prop: 'name', required: true, message: '请输入姓名' }, { prop: 'age', required: true, message: '请输入年龄' } ] } } } </script> ``` 上面代码中,设置了两个表单项的验证规则,分别是必填项验证。 2. 触发验证 在form组件上设置ref属性,可以通过ref属性获取form组件实例,然后调用实例的validate方法触发验证。 ``` <template> <u-form :rules="rules" ref="form"> <u-form-item label="姓名" prop="name"> <u-input v-model="form.name"></u-input> </u-form-item> <u-form-item label="年龄" prop="age"> <u-input v-model="form.age"></u-input> </u-form-item> <u-button type="primary" @click="submit">提交</u-button> </u-form> </template> <script> export default { data() { return { form: { name: '', age: '' }, rules: [ { prop: 'name', required: true, message: '请输入姓名' }, { prop: 'age', required: true, message: '请输入年龄' } ] } }, methods: { submit() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 } else { // 表单验证未通过,提示错误信息 } }) } } } </script> ``` 上面代码中,点击“提交”按钮时,调用submit方法,通过this.$refs.form.validate方法触发表单验证验证通过后执行提交操作,验证未通过则提示错误信息。 3. 定制验证规则 除了设置默认的验证规则,也可以在表单项上设置自定义的验证规则。 ``` <template> <u-form :rules="rules" ref="form"> <u-form-item label="姓名" prop="name"> <u-input v-model="form.name"></u-input> </u-form-item> <u-form-item label="年龄" prop="age"> <u-input v-model="form.age"></u-input> </u-form-item> <u-button type="primary" @click="submit">提交</u-button> </u-form> </template> <script> export default { data() { return { form: { name: '', age: '' }, rules: [ { prop: 'name', validator: (rule, value, callback) => { if (!value || value.length < 2) { callback(new Error('姓名长度不能少于2个字符')) } else { callback() } } }, { prop: 'age', required: true, message: '请输入年龄' } ] } }, methods: { submit() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 } else { // 表单验证未通过,提示错误信息 } }) } } } </script> ``` 上面代码中,自定义了姓名表单项的验证规则,如果输入的姓名长度少于2个字符,会提示“姓名长度不能少于2个字符”的错误信息。自定义的验证规则需要在validator属性中设置,validator属性是一个函数,函数接收3个参数:验证规则对象、表单项的值、回调函数。当验证规则不符合时,调用回调函数并传入错误信息,否则不传入任何参数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值