vue element 表單驗證不通過,滾動到固對應位置


我們在使用elementIUI實現表單驗證,內容比較多的時候,提示內容會被遮擋,這時候用戶不清楚什么情況,還會連續點擊提交按鈕。這個時候需求來啦:我們需要在表單驗證不通過的時候,頁面滾動到對應的位置。

 

了解來需求,那我們來看看如何實現?其實比較簡單,下面說一下大致思路:

  • 在表單驗證方法validate中,提供了兩個參數:是否校驗成功,和未通過校驗的字段規則。
  • 在需要驗證的位置加上ref,需要注意,這里的ref需要和prop的值一致

 

不多說了,直接上代碼:

驗證表單不通過,會調用 scrollToView 方法,該方法作用就是滾動到對應位置 

 

/**
 * element 表單多個驗證不通過,滾動到驗證提示的位置
 * { String } object 驗證規則
 * 備注:
 *     1.this.$refs.infoList.validate((_, object)=>{})   返回兩個參數,第一個參數:驗證是否成功,第二個參數:驗證規則
 *     2.驗證的標簽上添加ref屬性,名字和prop值一致。例:<el-form-item :prop="'infoData.' + scope.$index + '.coalName'" :ref="'infoData.' + scope.$index + '.coalName'" ></el-form-item>
 */
export function scrollToView(_this, object) {
  for (let i in object) {
    let dom = _this.$refs[i];
    if (Object.prototype.toString.call(dom) !== "[object Object]") {
      //這里是針對遍歷的情況(多個輸入框),取值為數組
      dom = dom[0];
    } 
    //第一種方法(包含動畫效果)
    dom.$el.scrollIntoView({
      //滾動到指定節點
      block: "center", //值有start,center,end,nearest,當前顯示在視圖區域中間
      behavior: "smooth", //值有auto、instant,smooth,緩動動畫(當前是慢速的)
    });

    //第二種方法
    // let top = dom.$el.getBoundingClientRect().top; //獲取當前節點的偏移值
    // console.log(top,'top');
    // let scrollTop = document.documentElement.scrollTop; //獲取視圖滾動值
    // let diff = top + scrollTop;
    // document.documentElement.scrollTop = diff - 276; //276是第一個輸入框節點距離頂部的偏移值,也可以在初始化提前保存
    //window.scrollTo(0,diff- 276) //同上
    break; //因為我們只需要檢測一項,所以就可以跳出循環了
  }
}

 


免責聲明!

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



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