You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.9 KiB

import yfieldsControls from "../yfieldsControls"
Component({
properties: {
rules: Object,
bindsubmit:String
},
data: {
form: {} as any,
label: {} as any
},
relations: {
'../yfieldsControls': {
type: 'descendant', // 关联的目标节点应为子节点
target: yfieldsControls,
linked: function (target) {
this.setData({ form: Object.assign(this.data.form, target.dataset) })
let label = {} as any
const labelName = Object.keys(target.dataset)[0]
const laeblValue = target.data.label
label[labelName] = laeblValue
this.setData({ label: Object.assign(this.data.label, label) })
}
}
},
methods: {
validate: function () {
for (const key in this.data.rules) {
// 判断form表单中是否存在这个数据
if (!(key in this.data.form)) { return false; }
const formValue = (this.data.form as any)[key]
// 判断这个数据是否是required
if (this.data.rules[key].require.value) {
if (formValue == '') {
const errMsg = this.data.rules[key].require.errMsg || `${this.data.label[key]}不能为空`
wx.showToast({ title: errMsg, icon: "none" })
return false
}
}
// 判断这个数据的其他正则
if (this.data.rules[key].re) {
const re = new RegExp(this.data.rules[key].re.value)
if (!re.test(formValue)) {
const errMsg = this.data.rules[key].re.errMsg || this.data.label[key] + "匹配规则失败,未配置规则错误提示"
wx.showToast({ title: errMsg, icon: "none" })
return false
}
}
}
return true;
},
onSubmit: function () {
console.log("ddddd")
if (!this.validate()) return;
this.triggerEvent("onSubmit",this.data.form,{})
},
},
})