Vue小白練級之路—001表單驗證功能的一般實現思路

  • 2022 年 2 月 11 日
  • 筆記

思路

  1. 先各自驗證
    • 非空校驗
    • 具體規則校驗(正則)
  2. 後兜底校驗( 防止用戶沒輸入資訊直接登錄 )

實現:( 以 element-ui 為例 )

  1. 在 el-form 標籤上用 model 動態綁定收集數據的對象(form)
  2. 在 el-form 標籤上用 rules 動態綁定驗證規則對象(formRule)
  3. 給 form 里的每一項需要驗證的 el-form-item 綁定 prop 屬性 , 值為驗證規則 formRule 里的每一項
  4. 兜底校驗

示例:(自定義數據名與 element-ui 不一致)



兩次密碼不一致的提示
實現方式:

  1. 在data函數之中,return 對象之前定義校驗函數 checkPwd,
  2. 在第二次密碼校驗的規則對象中 添加額外的規則對象
    程式碼演示:
點擊查看程式碼
 { validator 屬性: 值為校驗的函數名,
         triggle 觸發方式: 值也為blur  }
     data () {
        const checkPwd = (rules, value, cb) => {
          // 兩次密碼不一致的校驗配置
          // checkPwd就是validator屬性的校驗規則
          // 三個參數:
          // value: 收集的要校驗的這一項的值,
          // cb: 處理函數      cb():成功就執行該函數。
          if (value === this.regForm.password) {
            cb()
          } else {
            cb(new Error('兩次密碼不一致!'))
          }
        }
        return {
          regForm: {
            username: '',
            password: '',
            repassword: ''
          },
          regFormRules: {
            username: [
              { required: true, message: '用戶名為必填項!', triggle: 'blur' },
              { pattern: /^[a-zA-Z0-9]{1,10}$/, message: '用戶名需為1-10位的字母數字組合',  triggle: 'blur' }
            ],
            password: [
              { required: true, message: '密碼為必填項!', triggle: 'blur' },
              { pattern: /^\S{6,15}$/, message: '密碼需為6-15位的非空字元串',  triggle: 'blur' }
            ],
            repassword: [
              { required: true, message: '確認密碼為必填項!', triggle: 'blur' },
              { pattern: /^\S{6,15}$/, message: '密碼需為6-15位的非空字元串', triggle: 'blur' },
              { validator: checkPwd, triggle: 'blur' }
            ]
          }
        }