当前位置:   article > 正文

vue3中表单校验_vue3 表单校验

vue3 表单校验

一、用vant组件的van-field

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

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

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

二、正则表达式

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

三、@blur的方法

  1. //输入框失去焦点时判断输入是否非法,如果非法则存储
  2. export function regInputInvalid(e:IBaseObject){
  3. //输入框的值
  4. let val=e.target.value
  5. //输入框的label
  6. let spanText=e.target.labels[0].innerText
  7. let arr1,arr=ss_getItem('isInputInvalid') || []
  8. let obj =<IBaseObject> getVeriInputObj(val,spanText)
  9. //存储的数据前判断之前是否有对此输入框进行校验存储过,有则改为最新的,没有就加进去
  10. if(arr.length>0){
  11. let flag=arr.some((item:IBaseObject)=>item.label===spanText)
  12. if(flag){
  13. arr.forEach((item:any)=>{
  14. if(item.label===spanText){
  15. for(let key in item){
  16. item[key]=obj[key]
  17. }
  18. }
  19. })
  20. }else{
  21. arr.push(obj)
  22. }
  23. }else{
  24. arr.push(obj)
  25. }
  26. //筛选出校验未通过的Obj重新存储
  27. arr1=arr.filter((item:IBaseObject)=>{
  28. return !item.status
  29. })
  30. ss_setItem('isInputInvalid', arr1);
  31. }
  1. //获取输入框校验后的obj
  2. export function getVeriInputObj(val:string,spanText:string){
  3. let obj = {
  4. label: spanText,
  5. status: true,
  6. text: ''
  7. }
  8. if (val.length > 255) {
  9. showFailToast(`${spanText}字符不能大于255`);
  10. obj={
  11. label:spanText,
  12. status:false,
  13. text:`${spanText}字符不能大于255`
  14. }
  15. }else{
  16. if(spanText.indexOf('电话')>-1){
  17. if(!patternTel.test(val)){
  18. showFailToast(`${spanText}格式不对`);
  19. obj={
  20. label:spanText,
  21. status:false,
  22. text:`${spanText}格式不对`
  23. }
  24. }
  25. }else{
  26. if(pattern.test(val)){
  27. showFailToast(`${spanText}不能有特殊字符`);
  28. obj={
  29. label:spanText,
  30. status:false,
  31. text:`${spanText}不能有特殊字符`
  32. }
  33. }
  34. }
  35. }
  36. return obj
  37. }

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

1.提交方法

  1. async submit(){
  2. //校验不通过就返回
  3. if(!checkInputInvalid()){
  4. return;
  5. }
  6. ……………………………………
  7. }

2.校验的方法

  1. export const checkInputInvalid = () => {
  2. let arr=ss_getItem('isInputInvalid')
  3. if(arr.length>0){
  4. showFailToast(ss_getItem('isInputInvalid')[0].text)
  5. return false;
  6. }else{
  7. return true;
  8. }
  9. }

五、置空处理

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

  1. ss_setItem('isInputInvalid',[])

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/438273
推荐阅读
相关标签
  

闽ICP备14008679号