移动端表单校验错误显示组件

岁酱吖の 提交于 2019-12-01 07:54:59

   因业务需要,项目涉及大量表单提交,并且校验时会展示相应的错误样式(如下图),目前移动端的ui框架中并未找到相应的通用组件,如果按照原生的方法则需要给每一条数据项分别添加,代码会出现冗余,影响开发效率,所以需要实现组件化

具体代码如下:

 1 <template>
 2     <div class="valid-input" :class="{'error':error}">
 3         <slot></slot>  //使用时具体数据项
 4         <img src="../assets/error.png" v-show="error">
 5     </div>
 6 </template>
 7 
 8 <script>
 9     export default {
10         name: "Valid",
11         props:{
12             max:{
13                 type:Number,
14                 required:false //控制可输入数据最大长度
15             },
16             min:{
17                 type:Number,
18                 required:false //控制可输入数据的最小长度
19             },
20             validator:{
21                 type:Function,
22                 required:false  //根据业务需要具体定义校验方法
23             },
24             content:{
25                 required:true
26             },
27 30         },
31         watch:{             //监测数据变化
32             content(val){
33            
34                 if (val&&val!=""){
35                     if (this.min && val.length < this.min){
36                         this.error = true;
37                     }else if (this.max && val.length > this.max){
38                         this.error = true;
39                     }else if (this.validator && !this.validator(val)){
40                         this.error = true;
41                     }else {
42                         this.error = false;
43                     }
44                 }else{
45                    48                 }
49             }
50         },
51         data(){
52             return {
53                 error:false
54             }
55         }
56     }
57 </script>
58 
59 <style scoped lang="scss">
60     .valid-input{
61         position: relative;
62         line-height: 13.33vw;
63         img{
64             width: 4.53vw;
65             margin: 0 1vw;
66             vertical-align: middle;
67         }
68     }
69     .error>*{
70         color: #ff4b33;
71         &::placeholder{
72             color: #ff4b33;
73         }
74         &:-moz-placeholder{
75             color: #ff4b33;
76         }
77         &::-webkit-input-placeholder{
78             color: #ff4b33;
79         }
80         &:-ms-input-placeholder{
81             color: #ff4b33;
82         }
83     }     // 可根据业务自定义错误的样式
84 </style>

使用时:

 <tr>
        <td>手机号码</td>
        <td>
          <valid
                  :validator="validator.phoneValid"
                  :content="validate.tel"
          >
            <input type="tel" v-model="applicantInfo.tel" placeholder="请输入您的手机号码"  @change="telChange"/>
          </valid>
       
        </td>
      </tr>


input 在change事件发生时,将值赋值于校验的对象

   telChange(){
      this.validate.tel = this.applicantInfo.tel;
    },

validator 绑定的是所在项的单独的校验规则

     validator:{
        idValid:this.idValid,
        phoneValid:isPhoneNum, //公共方法中定义
       
      },

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!