vue3中表单校验

一、用vant组件的van-field

        1.v-model的时候加上.trim去掉首尾空格

        2.@blur的时候校验当前输入框是否有特殊字符。

<van-field placeholder="请输入姓名" @blur="regInputInvalid" v-model.trim="temporary.basicInfo.name" label="姓名"/>

二、正则表达式

export const pattern = /[`!!@#$%^&*()_+=\[\]{};':"\\|,,.。<《>》\/??—·~]/;
export const patternTel = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;

三、@blur的方法

//输入框失去焦点时判断输入是否非法,如果非法则存储
export function regInputInvalid(e:IBaseObject){
    //输入框的值
  let val=e.target.value
    //输入框的label
  let spanText=e.target.labels[0].innerText
  let arr1,arr=ss_getItem('isInputInvalid') || []
  let obj =<IBaseObject> getVeriInputObj(val,spanText)
    //存储的数据前判断之前是否有对此输入框进行校验存储过,有则改为最新的,没有就加进去
  if(arr.length>0){
    let flag=arr.some((item:IBaseObject)=>item.label===spanText)
    if(flag){
      arr.forEach((item:any)=>{
        if(item.label===spanText){
          for(let key in item){
            item[key]=obj[key]
          }
        }
      })
    }else{
      arr.push(obj)
    }
  }else{
    arr.push(obj)
  }
//筛选出校验未通过的Obj重新存储
  arr1=arr.filter((item:IBaseObject)=>{
    return !item.status
  })
  ss_setItem('isInputInvalid', arr1);
}
//获取输入框校验后的obj
export  function getVeriInputObj(val:string,spanText:string){
  let obj = {
    label: spanText,
    status: true,
    text: ''
  }
  if (val.length > 255) {
    showFailToast(`${spanText}字符不能大于255`);
    obj={
      label:spanText,
      status:false,
      text:`${spanText}字符不能大于255`
    }
  }else{
    if(spanText.indexOf('电话')>-1){
      if(!patternTel.test(val)){
        showFailToast(`${spanText}格式不对`);
        obj={
          label:spanText,
          status:false,
          text:`${spanText}格式不对`
        }
      }
    }else{
      if(pattern.test(val)){
        showFailToast(`${spanText}不能有特殊字符`);
        obj={
          label:spanText,
          status:false,
          text:`${spanText}不能有特殊字符`
        }
      }
    }
  }
  return obj
}

四、在每个表单提交的方法中先进行判断该页面的输入框是否都符合要求

1.提交方法

 async submit(){
    //校验不通过就返回
        if(!checkInputInvalid()){
          return;
        }
    ……………………………………
}

2.校验的方法

export const checkInputInvalid = () => {
  let arr=ss_getItem('isInputInvalid')
  if(arr.length>0){
    showFailToast(ss_getItem('isInputInvalid')[0].text)
    return false;
  }else{
    return true;
  }
}

五、置空处理

1.在每次登录的时候、路由跳转的时候设置(避免用户返回进入其它页面的表单操作时报错)


  ss_setItem('isInputInvalid',[])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 的动态表单校验可以通过使用内置的校验器和自定义校验规则来实现。我们可以在表单输入的时候对输入的内容进行校验,然后给出相应的提示信息。 首先,我们可以利用 Vue 3 的响应式特性来实时监听表单输入的变化。可以使用 `v-model` 指令将表单的值与 Vue 实例的数据进行绑定。 其次,Vue 3 提供了内置的校验器,可以用于检查常见的表单规则,例如必填、长度范围等。可以通过在表单元素上使用 `v-bind` 指令来绑定校验规则。在编写校验规则时,我们可以利用正则表达式来实现更复杂的校验逻辑。 除了内置的校验器外,我们还可以自定义校验规则。可以使用 `watch` 监听表单值的变化,并根据需要编写校验逻辑。在校验过程,可以根据校验结果来给出相应的提示信息。 在表单提交时,可以通过调用校验方法来进行整体校验。可以遍历表单的所有字段,逐一进行校验,并将校验结果保存在一个对象校验结果可以用于在页面上显示相应的提示信息,或者阻止表单的提交。 综上所述,Vue 3 的动态表单校验可以通过使用响应式特性、内置的校验器和自定义校验规则来实现。这样可以方便地对表单进行实时的校验,并给出相应的提示信息。在实际应用,可以根据具体的场景和需求,选择合适的校验方式和规则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值