为什么 Vuetify 规则将 0 作为未在惰性验证中设置?



我正在从 API 中分配默认值,但是当 v-text-field 的值为 0 时,:rules 标签将其视为未设置:

图像这是我的代码

<v-col cols="12" sm="6" md="4">
<v-text-field type="number"  :rules="incapacidadRules" min="0" v-model="editedItem.incapacidad" label="Incapacidad"></v-text-field>
</v-col> 
<v-col cols="12" sm="6" md="4">
<v-text-field type="number" min="0" :value="editedItem.descanso"  :rules="descansosRules" v-model="editedItem.descanso" label="Descansos"></v-text-field>
</v-col> 
<v-col cols="12" sm="6" md="4">
<v-text-field type="number" min="0"  :rules="permisosRules" v-model="editedItem.permiso" label="Permisos"></v-text-field>
</v-col> 

和我的规则

incapacidadRules: [
v => !!v || 'Incapacidad Requerido'
],
descansosRules: [
v => !!v || 'Descansos Requerido'
],
permisosRules: [
v => !!v || 'Permisos Requerido'
],

当我手动将值设置为 0 时,规则没有问题。

0 是假的。所以!!0==false.对于您的规则,也许使用typeof v === "number" ? v : 'Incapacidad Requerido'而不是 !!五.

考虑!~aa >= 0,对a < 0

我可以解决这个问题:正如 Tanner 提到的 0 是一个假的,所以当你将值设置为

editItem(item){
this.editedItem.faltas=item.faltas;
}
并且item.faltas

为 0,则 V 文本字段被识别为 false,但值与 0 不同时没有问题。因此,您需要始终将值设置为字符串:

editItem(item){          
this.editedItem.faltas=`${item.faltas}`;
}

您可以使用转换类型的parseInt()或其他变体来验证数值而不是字符串值。v-text-field>表示字符串值,0 是假的,因此触发规则。

(v) => { 
if (parseInt(v) >= 0) return true; 
return 'Incapacidad Requerido'; 
},

最新更新