文档地址 : https://www.uviewui.com/components/form.html
文档已经很详细了,但是在使用过程中,遇见了 验证不灵敏的情况 :
- 用户修改了 输入内容,但是form校验并没有更新提示。
- 添加校验方式 ,完全不能监听到输入,触发form校验。
代码如下:
<u-form :model="supervisoryForm" ref="uForm"><view class="form_item"><u-form-item prop="handleContent" :border-bottom="false"><u-inputv-model="supervisoryForm.handleContent"label-width="0"placeholder="请输入督办内容":border-bottom="false"type="textarea"maxlength="300"height="400":trim="true":placeholder-style="{background: '#f8f9fb',color: '#b2b2b2','font-size': '28rpx','line-height': '40rpx',}":custom-style="{position: 'relative',background: '#f8f9fb',padding: '16rpx 20rpx',height: '400rpx','padding-bottom': '50rpx',}"></u-input><view class="remand_text">如需上传文件附件,请至PC端处理</view></u-form-item><u-form-itemlabel="督办对象"prop="handleOrgId":label-width="140":required="true"><organization-for-projectId:projectId="curPjId"v-model="supervisoryForm.handleOrgId"/></u-form-item><u-form-item><u-button type="primary" @click="validateUForm" :loading="saveLoading">提交</u-button></u-form-item></view></u-form><script>data() {return {supervisoryForm: {handleContent: "",handleOrgId: null,saveLoading:false,},rules:{handleContent: [{required: true,message: "请输入督办内容",trigger: ["change","blur"],},],handleOrgId: [{required: true,message: "请选择督办对象",trigger: ["change"],type: "number",},],}}},onReady() {this.$refs.uForm.setRules(this.rules);},methods:{validateUForm() {this.$refs.uForm.validate((valid) => {if (valid) {// 校验通过后执行函数}});},}</script>
排查很久,到最后发现是自定义的表单组件,在rules配置项里面,没有配置 type 参数项,导致的form验证失灵 ( 文档并没有写明必须配置 ,但是不配置会出现问题)
使用From 组件需要注意到的点:
- form 标签 需要使用ref 绑定 【ref=”uForm”】 在校验时 使用 【this.$refs.uForm.validate】 验证
- 需要在 【onReady】声明周期 配置rules 【this.$refs.uForm.setRules】
- u-form-item标签需要添加 prop属性,并且属性值和 内部的表单v-model绑定的值一致
- 当表单校验不生效的时候 可以尝试给rules配置 type值
- @input + : value 相当于 v-model
