Antd-for-vue 表單驗證失效 自定義表單驗證使表單非空驗證失效




antd-for-vue 表單驗證失效 自定義表單驗證使表單非空驗證失效(其他驗證失效)

antd 的 表單校驗方法包括 validateFields 和 validateFieldsAndScroll里面可以接收校驗字段數組, options, 和一個回調函數
  • 錯誤代碼
  organizationId: {rules: [
               {required: true, message: '請輸入團支部!'},
               { validator: tpMemberCount ,trigger: 'change'},
             ],
           },  //導致失效的地方  
               //具體驗證方法
        let tpMemberCount = (rule, value, callback) => {
              console.log(value)
              try {
                getAction("/tp/tpOrganization/queryById", {id: value}).then((res) => {
                  if (res.success) {
                    let MemberCount = res.result.tyNumber
                    console.log(MemberCount)
                    callback();
                    if (MemberCount < 1) {
                      callback(new Error('該支部下無團員,請重新選擇。'));
                    }
                  } else {
                    this.$message.warning("未查詢到[" + res.result.orgName + "]組織人數,請手動填入");
                    callback();
                  }
                });
              } catch (err){
                callback();
              }
              };
當不設置自定義校驗方法時 其他校驗均有效
  • 修改子自定義的校驗方法
  • 解決過程代碼
  • let tpMemberCount = (rule, value, callback) => {
          console.log(1)
            getAction("/tp/tpOrganization/queryById", {id: value}).then((res) => {
              if (res.success) {
                let MemberCount = res.result.tyNumber
                if (MemberCount < 1) {
                  callback(new Error('該支部下無團員,請重新選擇。'));
                  console.log(2)
                }else {
                  callback()
                }
                // if (value == undefined && value == null && value == ''){
                //   callback(new Error('請選擇請團支部'));
                //   console.log(3)
                // }
              } else {
                this.$message.warning("未查詢到[" + res.result.orgName + "]組織人數,請手動填入");
                callback();
                console.log(4)
              }
            });
          callback()
          console.log(5)
          };

     

結論在自定義的驗證的方法中出現了問題

  • 修改后正確代碼

    let tpMemberCount = (rule, value, callback) => {
            getAction("/tp/tpOrganization/queryById", {id: value}).then((res) => {
              if (res.success) {
                let MemberCount = res.result.tyNumber
                if (MemberCount < 1) {
                  callback(new Error('該支部下無團員,請重新選擇。'));
                }else {
                  callback()
                }
              } else {
                this.$message.warning("未查詢到[" + res.result.orgName + "]組織人數,請手動填入");
                callback();
              }
            });
          };

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM