这些规则会起作用并显示正确的验证消息。当this.valid为false时,该按钮将被禁用。checkTextBoxValidation方法会对每个输入调用以检查myFormref中的验证。一旦它试图验证我得到标题中的错误。因此,这.valid不会改变。
checkTextBoxValidation() {
console.log('check v-text-box validation');
this.valid = !!(this.$refs.myForm as Vue & {
validate: () => Promise<boolean>
}).validate();
console.log('valid:', this.valid);
},
<v-form ref='myForm' @submit.prevent='submit(idx, fpIdx)'>
<v-row>
<v-col sm='7'>
<v-text-field label='Enter Value'
v-model='subHeader.updateAmount'
:rules='[...rules.currencyValue, ...rules.required]'
required
@input='checkTextBoxValidation'
></v-text-field>
</v-col>
<v-col sm='5' class='mt-2'>
<v-btn rounded
color='primary'
type='submit'
:disabled='!valid'
>{{ SUBMIT_LABEL }}
</v-btn>
</v-col>
</v-row>
</v-form>
我也试过this.valid = (this.$refs.myForm as HTMLFormElement).checkValidity();
,得到了这个。$refs.myForm.checkValidity不是函数
1条答案
按热度按时间kwvwclae1#
当我把你的代码放到操场上时,它就能工作了,所以我猜你的错误发生在别的地方。您是否在安装组件之前从其他地方运行该函数?
请注意,
.verify()
返回一个promise,所以!!this.$refs.myForm.validate()
将始终为true(因为promise不是一个假值)。总而言之,你可能更好地绑定到VForm的
modelValue
:(note如果表单有效但validate-on事件尚未发生,则从update返回的值将为null)