遇到的项目问题是在每个折叠面板里边都有不同的表单,用 element 上的校验时,若有没填写的表单或不符合表单格式的要求,则自动展开该折叠面板,且页面定位到没校验成功的表单。
方法一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 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", behavior: "smooth", }); } console.log("error submit!!"); return false; } });
|
方法二
1 2 3 4 5 6 7 8 9 10 11 12 13
| submit(formName) { this.$refs[formName]["validate"]((valid) => { if (valid) {
} else { setTimeout(()=>{ var isError= document.getElementsByClassName("is-error"); isError[0].querySelector('input').focus(); },100); return false; } }); }
|