| | |
| | | /** |
| | | * CForm - 表单套装组件,套件的主体 |
| | | * 表单容器组件,用于管理表单数据、处理表单验证和提交 |
| | | * 支持自动滚动到错误位置,提供表单项变化回调和表单完成回调 |
| | | * 提供手动提交、预验证和错误设置等功能 |
| | | * @author Tevin |
| | | */ |
| | | |
| | |
| | | title: validation.msg, |
| | | icon: 'none', |
| | | mask: false, |
| | | duration: 2000, |
| | | duration: validation.msg.length < 16 ? 2000 : 3000, |
| | | }); |
| | | return; |
| | | } |
| | |
| | | title: validation.msg, |
| | | icon: 'none', |
| | | mask: false, |
| | | duration: 2000, |
| | | duration: validation.msg.length < 16 ? 2000 : 3000, |
| | | }); |
| | | // 检查失败 |
| | | callback && callback(false); |
| | |
| | | // 直接设定错误 |
| | | $setErrors(errors) { |
| | | const checklist = []; |
| | | const unchecks = []; |
| | | Object.keys(errors).forEach(errorKey => { |
| | | if (typeof this.validators[errorKey] !== 'undefined') { |
| | | checklist.push( |
| | | this.validators[errorKey]('setError', errors[errorKey]) |
| | | this.validators[errorKey]('setError', errors[errorKey]), |
| | | ); |
| | | } else { |
| | | unchecks.push(errors[errorKey]); |
| | | } |
| | | }); |
| | | Promise.all(checklist).then(validations => { |
| | | for (let validation of validations) { |
| | | // 第一个不通过项提示 |
| | | if (!validation.passed) { |
| | | if (this.autoScrollToError === 'on') { |
| | | this.scrollTop = validation.offset.top - this.offsetTop; |
| | | if (checklist.length > 0) { |
| | | Promise.all(checklist).then(validations => { |
| | | for (let validation of validations) { |
| | | // 第一个不通过项提示 |
| | | if (!validation.passed) { |
| | | if (this.autoScrollToError === 'on') { |
| | | this.scrollTop = validation.offset.top - this.offsetTop; |
| | | } |
| | | Taro.showToast({ |
| | | title: validation.msg, |
| | | icon: 'none', |
| | | mask: false, |
| | | duration: validation.msg.length < 16 ? 2000 : 3000, |
| | | }); |
| | | return; |
| | | } |
| | | Taro.showToast({ |
| | | title: validation.msg, |
| | | icon: 'none', |
| | | mask: false, |
| | | duration: 2000, |
| | | }); |
| | | return; |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | } else if (unchecks.length > 0) { |
| | | Taro.showToast({ |
| | | title: unchecks[0], |
| | | icon: 'none', |
| | | mask: false, |
| | | duration: unchecks[0] < 16 ? 2000 : 3000, |
| | | }); |
| | | } |
| | | }, |
| | | $setScrollTop(top) { |
| | | if (this.autoScrollToError === 'on') { |