| | |
| | | */ |
| | | |
| | | <template> |
| | | <view :class="'c-form-outer ' + (autoScrollToError==='on'?'auto-scroll':'')"> |
| | | <view |
| | | :class="'c-form-outer ' + (autoScrollToError==='on'?'auto-scroll':'')" |
| | | ref="formOuter" |
| | | > |
| | | <form |
| | | class="c-form" |
| | | v-if="autoScrollToError==='off'" |
| | |
| | | |
| | | <script> |
| | | import Taro from '@tarojs/taro'; |
| | | import { $ } from '@tarojs/extend'; |
| | | import './cForm.scss'; |
| | | |
| | | export default { |
| | |
| | | formData: this.formData, |
| | | }, |
| | | validators: {}, |
| | | scrollTop: '', |
| | | scrollTop: 0, |
| | | offsetTop: 0, |
| | | }; |
| | | }, |
| | | methods: { |
| | |
| | | // 第一个不通过项提示 |
| | | if (!validation.passed) { |
| | | if (this.autoScrollToError === 'on') { |
| | | this.scrollTop = validation.offset.top; |
| | | this.scrollTop = validation.offset.top - this.offsetTop; |
| | | } |
| | | Taro.showToast({ |
| | | title: validation.msg, |
| | |
| | | // 第一个不通过项提示 |
| | | if (!validation.passed) { |
| | | if (this.autoScrollToError === 'on') { |
| | | this.scrollTop = validation.offset.top; |
| | | this.scrollTop = validation.offset.top - this.offsetTop; |
| | | } |
| | | Taro.showToast({ |
| | | title: validation.msg, |
| | |
| | | // 直接设定错误 |
| | | $setErrors(errors) { |
| | | const checklist = []; |
| | | errors.forEach(errorItem => { |
| | | if (typeof this.validators[errorItem.key] !== 'undefined') { |
| | | Object.keys(errors).forEach(errorKey => { |
| | | if (typeof this.validators[errorKey] !== 'undefined') { |
| | | checklist.push( |
| | | this.validators[errorItem.key]('setError', errorItem.msg) |
| | | this.validators[errorKey]('setError', errors[errorKey]) |
| | | ); |
| | | } |
| | | }); |
| | |
| | | // 第一个不通过项提示 |
| | | if (!validation.passed) { |
| | | if (this.autoScrollToError === 'on') { |
| | | this.scrollTop = validation.offset.top; |
| | | this.scrollTop = validation.offset.top - this.offsetTop; |
| | | } |
| | | Taro.showToast({ |
| | | title: validation.msg, |
| | |
| | | this.formRes.$regItemValidator = (name, cb) => { |
| | | this.validators[name] = cb; |
| | | }; |
| | | // 表单滚动偏移 |
| | | if (this.autoScrollToError === 'on') { |
| | | setTimeout(() => { |
| | | $(this.$refs.formOuter) |
| | | .offset() |
| | | .then(offset => { |
| | | this.offsetTop = offset.top + 10; |
| | | }); |
| | | }, 10); |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | | this.validators = {}; |