因业务需要,项目涉及大量表单提交,并且校验时会展示相应的错误样式(如下图),目前移动端的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, //公共方法中定义

      },

  

 

02-11 04:22