遇到的項目問題是在每個折疊面板里邊都有不同的表單,用element上的校驗時,若有沒填寫的表單或不符合表單格式的要求,則自動展開該折疊面板,且頁面定位到沒校驗成功的表單
this.$refs.form.validate((valid, object) => { if (valid) { alert('submit!') } else { let split = '' for (let i in object) { let dom = this.$refs[i] if (Object.prototype.toString.call(dom) !== '[object Object]') { //這里是針對遍歷的情況(多個輸入框),取值為數組 dom = dom[0] // 第一個未填寫必填項的表單被記錄,這個是為了處理如何把校驗未成功的第一個面板展開 split = dom.prop let index = split.indexOf('.') let last = split.lastIndexOf('.') // 通過未填寫的表單索引展開折疊面板 this.activeName = Number(split.slice(index + 1, last)) break } dom.$el.scrollIntoView({ //滾動到指定節點 block: 'center', //值有start,center,end,nearest,當前顯示在視圖區域中間 behavior: 'smooth' //值有auto、instant,smooth,緩動動畫(當前是慢速的) }) } console.log('error submit!!') return false } })
