La fonction validate de la validation de formulaire du composant d'extension uniapp uni-forms ne répond qu'une seule fois
code du problème
Copié directement à partir de l'exemple officiel. pour démonstration
<template>
<view>
<uni-forms ref="form" :modelValue="formData" :rules="rules">
<uni-forms-item label="兴趣爱好" required name="hobby">
<uni-data-checkbox v-model="formData.hobby" multiple :localdata="hobbys" />
</uni-forms-item>
</uni-forms>
<button class="button" @click="submit">校验表单</button>
</view>
</template>
<script>
export default {
data() {
return {
formData:{
},
rules: {
hobby: {
rules: [{
validateFunction:function(rule,value,data,callback){
if (value.length < 2) {
callback('请至少勾选两个兴趣爱好')
}
return true
}
}]
}
}
}
},
onReady() {
this.$refs.form.setRules(this.rules)// 需要在onReady中设置规则
},
methods: {
submit(form) {
this.$refs.form.validate().then(console.log).catch(console.error)
}
}
}
</script>
description officielle
Je l'ai dit mais je n'ai pas semblé le répéter. . .
Le responsable a déclaré que dans onReady
les règles de vérification contraignantes
onReady() {
this.$refs.form.setRules(this.rules); // 需要在onReady中设置规则
},
Mais mon code actuel a été uni-forms
modifié en copiant l'intégralité d'une autre page. :rules="rules"
Il n'a donc pas été supprimé. Cela ne fonctionne donc validateFunction
qu'au premier appel this.$refs.form.validate()
.
REMARQUE : Lors de l'utilisationvalidateFunction
:
- Dans
onReady
des règles de validation contraignantes. - Supprimez
uni-forms
ce qui précède:rules="rules"
. (le cas échéant)
Doute :
onReady
et :rules="rules"
ne peut pas fonctionner normalement, pourquoi ne pas lancer une exception ?
Pourquoi peut-il être déclenché à nouveau pour confondre les gens ? . . Bien. .