ViewUI表格Table嵌套From表单-动态校验数据合法性的解决方法

这篇具有很好参考价值的文章主要介绍了ViewUI表格Table嵌套From表单-动态校验数据合法性的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

项目需求:在表格中实现动态加减数据,并且每行表格内的输入框,都要动态校验数据,校验不通过,不让提交数据,并且由于表格内部空间较小,我仅保留红边框提示,文字提示给隐藏了,不然表格内的框会很大很难看。

如果,你需要提示的话,不要show-message属性

            <Form ref="formDynamic"
                  :model="obj"
                  :label-width="15"
                  :show-message="false" //去掉这一行代码就显示校验错误信息了
                  inline
            >

问题描述

提示:在表格中实现动态加减数据,并且每行表格内的输入框,都要动态校验数据

ViewUI表格Table嵌套From表单-动态校验数据合法性的解决方法,view design

ViewUI表格Table嵌套From表单-动态校验数据合法性的解决方法,view design

原因分析:

提示:这里我并没有用viewUI的table组件,用的是原生html做的表格,然后样式做成和table组件相似,我不用table组件,是因为组件限制太多,组件用v-for渲染表格达不到项目需求,并且内部prop也检测不到校验。

这边的代码是精简的,里面核心的代码就在这,如果不是很明白的话,下面有全部代码

           <Form ref="formDynamic"
                  :model="obj"
                  :label-width="15"
                  :show-message="false"
                  inline
            >
              	<table id="formDynamic" style="border:  1px solid #e8eaec;border-collapse: collapse;">
                	<th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">保险费用</th>
                	<tr v-for="(item, index) in obj.modelData"
	                    :key="index"
	                    style="border:  1px solid #e8eaec"
                	>
                    <td style="border:  1px solid #e8eaec;padding: 7px">
	                    <FormItem
	                        label=" "
	                        :prop="'modelData.'+index+'.insuranceFee'"
	                        :rules="[{required: true, type:'number', message: '请输入', trigger: 'blur'},
	                        {pattern:/^(0|([1-9]\d*))(\.\d{1,2})?$/, message: '请输入正数'}]"
	                    >
	                      <Input
	                          v-model.trim.number="obj.modelData[index].insuranceFee"
	                          :show-word-limit='true'
	                          :maxlength="10"
	                          :disabled="Boolean(flag)"
	                      ></Input>
                    	</FormItem>
	                  </td>
                  </tr>
                </table>
             </Form>

解决方案:

提示:全部代码:文章来源地址https://www.toymoban.com/news/detail-647335.html

  <template>
            <Form ref="formDynamic"
                  :model="obj"
                  :label-width="15"
                  :show-message="false"
                  inline
            >
              <table id="formDynamic" style="border:  1px solid #e8eaec;border-collapse: collapse;">
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">保险编号</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">保险费用</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">保险类型</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">保险应收</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">保险实收</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">保单欠款</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">收费开始时间</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">收费截止时间</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">备注</th>
                <th style="border:  1px solid #e8eaec;padding: 8px 0;background-color: #f8f8f9">操作</th>
                <tr v-for="(item, index) in obj.modelData"
                    :key="index"
                    style="border:  1px solid #e8eaec"
                >
                  <!--                  保险编号-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.insuranceId'"
                        style="width: 120px"
                        :rules="{required: true, message: '请输入', trigger: 'change'}">
                      <Select
                          v-if="!Boolean(flag)"
                          transfer
                          v-model="obj.modelData[index].insuranceId"
                          @on-change="changeBd(item,index)"
                      >
                        <Option
                            v-for="item in policyData"
                            :value="item.id"
                            :key="item.id"
                        >{{ item.insuranceCode }}
                        </Option
                        >
                      </Select>
                      <Input v-else :disabled='Boolean(flag)' v-model="obj.modelData[index].insuranceCode"></Input>
                    </FormItem>
                  </td>
                  <!--                  保险费用-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.insuranceFee'"
                        :rules="[{required: true, type:'number', message: '请输入', trigger: 'blur'},
                        {pattern:/^(0|([1-9]\d*))(\.\d{1,2})?$/, message: '请输入正数'}]"
                    >
                      <Input
                          v-model.trim.number="obj.modelData[index].insuranceFee"
                          :show-word-limit='true'
                          :maxlength="10"
                          :disabled="Boolean(flag)"
                      ></Input>
                    </FormItem>
                  </td>
                  <!--                  保险类型-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.insuranceType'"
                        :rules="{required: true, message: '请输入'}">
                      <Input type="text" disabled v-model="item.insuranceType" placeholder="请输入..."></Input>
                    </FormItem>
                  </td>
                  <!--                  保险应收-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.insuranceReceivables'"
                        :rules="[{required: true, type:'number',  message: '请输入', trigger: 'blur'},
                        {pattern:/^(0|([1-9]\d*))(\.\d{1,2})?$/, message: '请输入正数'}]"
                    >
                      <Input
                          v-model.trim.number="obj.modelData[index].insuranceReceivables"
                          @on-change="calculateCost(item,index)"
                          :show-word-limit='true'
                          :maxlength="10"
                          :disabled="Boolean(flag)"
                          @input="e => handleInput(e,'insuranceReceivables')"
                      ></Input>
                    </FormItem>
                  </td>
                  <!--                  保险实收-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.insurancePaid'"
                        :rules="[{required: true, type:'number',  message: '请输入', trigger: 'blur'},
                        {pattern:/^(0|([1-9]\d*))(\.\d{1,2})?$/, message: '请输入正数'}]"
                    >
                      <Input
                          v-model.trim.number="obj.modelData[index].insurancePaid"
                          @on-change="calculateCost(item,index)"
                          :show-word-limit='true'
                          :maxlength="10"
                      ></Input>
                    </FormItem>
                  </td>
                  <!--                  保险欠款-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.insuranceDebt'"
                        :rules="[{required: true, validator: '',  message: '请输入',type:'number', trigger: 'blur'},
                        {pattern:/^(0|([1-9]\d*))(\.\d{1,2})?$/, message: '请输入正数'}]"
                    >
                      <Input
                          v-model.trim.number="obj.modelData[index].insuranceDebt"
                          disabled=""
                      ></Input>
                    </FormItem>
                  </td>
                  <!--                  收费开始时间-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.startTime'"
                        :rules="{required: true, message: '请输入'}">
                      <DatePicker type="date"
                                  transfer
                                  format="yyyy-MM-dd"
                                  @on-change="obj.modelData[index].startTime = $event, setOptions($event,item,index,'start')"
                                  placeholder="开始时间"
                                  v-model="obj.modelData[index].startTime"
                                  :disabled="Boolean(flag)"
                      >
                        <!--                    @on-change="modelData[index].startTime = $event"-->
                      </DatePicker>
                    </FormItem>
                  </td>
                  <!--                  收费截止时间-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=" "
                        :prop="'modelData.'+index+'.endTime'"
                        :rules="{required: true, message: '请输入'}">
                      <DatePicker type="date"
                                  transfer
                                  format="yyyy-MM-dd"
                                  :options='timeOptions[timeIndex]'
                                  placeholder="截止时间"
                                  @on-change="obj.modelData[index].endTime = $event"
                                  @on-open-change="setOptions($event,item,index, 'end')"
                                  v-model="obj.modelData[index].endTime"
                                  :disabled="Boolean(flag)"
                      >
                      </DatePicker>
                    </FormItem>
                  </td>
                  <!--                  备注-->
                  <td style="border:  1px solid #e8eaec;padding: 7px">
                    <FormItem
                        label=""
                        :label-width="0"
                        :prop="'modelData.'+index+'.remark'"
                    >
                      <Input
                          v-model="obj.modelData[index].remark"
                          :show-word-limit='true'
                          :maxlength="100"
                          :disabled="Boolean(flag)"
                      ></Input>
                    </FormItem>
                  </td>
                  <!--                  操作-->
                  <td style="border:  1px solid #e8eaec;padding: 0px 7px 0px 7px;width: 180px;text-align: center">
                    <Button type="primary" style="" @click="cuteFTP(row,index)"
                            v-permission="'alliance:business:record:insurance:upload'"
                    >上传
                    </Button>
                    <Poptip
                        v-if="!flag"
                        confirm
                        :transfer="true"
                        title="你确定删除吗?"
                        @on-ok="delInsurance(index)"
                    >
                      <Button type="error">
                        <Icon type="md-trash"/>
                        删除
                      </Button>
                    </Poptip>
                  </td>
                </tr>
              </table>
            </Form>
          </template>

到了这里,关于ViewUI表格Table嵌套From表单-动态校验数据合法性的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3 组合式 ant.design组件Table嵌套表格,从后端获取数据并动态渲染

    在根据官方文档使用ant.design中的嵌套表格时,发现官方文档很多地方都不够详细。在过程中踩了不少坑,例如: 子表如何获取父表的数据? 如何获取子表的行索引? 如何让子表的数据源来自父表该行的数据? 总之,最后还是磕磕绊绊做完了功能,于是第一时间把代码整理

    2024年02月15日
    浏览(46)
  • Vue3 element-plus表单嵌套表格实现动态表单验证

    部分效果图如下: 另表格有添加和删除按钮,点击提交进行表单验证。 首先data格式必须是对象包裹数组 给表单绑定form数据 表格绑定tableData数据 给表单项增加验证规则 rules对应data rules对象,prop对应表单字段(注意是表格里每一行对应的字段 forms.tableData[下标].key) prop的关

    2024年02月14日
    浏览(44)
  • element-ui的el-form表单和el-table校验嵌套使用校验el-input和el-select

    场景:前端开发中,经常会遇到比较多的表单填写页面,其中有el-form,el-table,表格的每一列中又嵌套着输入框或者下拉框,然后每个还需要做单独的校验 效果:   点击保存可校验el-input和el-select是否有值,不符合校验规则就标红提醒   1.el-form里面嵌套el-table 2.在el-table-column自定义内

    2024年02月02日
    浏览(52)
  • vue+Element UI 实现动态表单(点击按钮增删表格及嵌套输入框的增删)(1)

    el-button size=“small” @click=“addTable”新增 el-button size=“small” @click=“delTable”删除 el-table ref=“table” :data=“tableDataBind.taAssessltems” tooltip-effect=“dark” border @selection-change=“selectRow” 规格: 重量: 数量: 加工费: el-button size=“mini” type=“primary” icon=“el-icon-circle-plus-ou

    2024年04月13日
    浏览(46)
  • elementui 表单数据嵌套过深导致校验不了问题解决

    在使用 elementui 表单校验的过程中发现表单中存在嵌套多个层级的数据不能进行校验。 elementui 中如果需要进行表单校验,表单项的 prop 和 v-model 绑定的属性值命名必须要是相同的。而对于多层级的嵌套属性我们应该怎么表示呢? 只需要将表单对象后的字符串作为 prop 的值即

    2024年01月24日
    浏览(51)
  • el-table 多表格弹窗嵌套数据显示异常错乱问题

    使用vue+element开发报表功能时,需要列表上某列的超链接按钮弹窗展示,在弹窗的el-table列表某列中再次使用超链接按钮点开弹窗,以此类推多表格弹窗嵌套,本文以弹窗两次为例 最终效果如下示例页面 这里有几个可能的原因和建议来解决这个问题: ①数据问题: 首先确保

    2024年02月05日
    浏览(47)
  • element ui form表单循环嵌套 及嵌套表单item的校验方法

    html:  js:  详细的大家可以参考:element ui form循环嵌套表单 及嵌套表单的验证方法(校验)_element循环表单_RxnNing的博客-CSDN博客

    2024年02月09日
    浏览(53)
  • elementUI 动态校验表单数据的方法

    直接设置如下 list 为动态获取的数据值列表数据 这里主要设置两块内容 prop为动态数据 rules设置需要校验的值 :prop=“ list.${index}.title ” :rules=“rules.title” //title 名称可自己定义

    2024年02月21日
    浏览(38)
  • ElementUI 实现动态表单数据校验(已解决)

    大家好很久没有更新文章了,本片文章主要记录一下遇到的问题, 使用element-ui开发,el-form 表单验证,由于表单的每一项是后端返回动态渲染的,之前只写过静态的表单验证,网上查了一些资料和element的官方文档最后得已解决,记录下来分享给大家。 感兴趣的小伙伴可以学

    2024年02月14日
    浏览(41)
  • 表格(el-table)里面嵌套表格(el-table)

    样式如下:   用到的代码: 一般需要嵌套表格这种情况下,后端返回的都是字符串格式的数组,需要在接收到数据后自己转化,编辑好提交的时候也需要自己把数组转为字符串格式传给后端. 一般在涉及到嵌套表格的情况下,新增或者编辑某条记录的时候,都会有动态增加或者删除一

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包