vue修改数据的时候,表单值回显不正确问题及解决

目录
  • 修改数据的时候,表单值回显不正确
  • vue简单实现数据回显
    • 1、回显输入框html
    • 2、data 定义的数据
    • 3、计算属性判断按钮状态
    • 4、对*数据做处理

修改数据的时候,表单值回显不正确

如果在修改数据的时候,发现表单的值回显不正确,每次修改,都是第一次修改的值,这个可能是你的代码有问题。

如果出现上面的问题,请检查

(1) prop的数据是否绑定正确

<el-col :span="24">
  <el-form-item label="图标" prop="icon">
    <e-icon-picker v-model="stform.icon" />
  </el-form-item>
</el-col>

(2) 实在不行 forceUpdate一次

this.$forceUpdate();

vue简单实现数据回显

简单记录自己写的数据回显,比较复杂如果有更好的方法请指正

写了两个输入框,用焦点修改状态通过值来判断可否点击

1、回显输入框html

       <van-form @submit="onSubmit">
        //这块是判断是否显示 哪一个输入框
         <template v-if="isInput">
          <van-field v-model="repeatauthInfo.repeatbankNo"
                     label="本人实名银行卡"
                     name="本人实名银行卡2"
                     maxlength="25"
                     :formatter="formatter"//效验规则
                     :disabled='hasDisabled'
                     label-class="authTitle"
                     placeholder="请填写银行卡号"
                     @input="repeatInputbankNo"
                     @blur="blurBankNo"//失去焦点事件 
                     input-align="right" />
        </template>
        <template v-else>
          <van-field v-model="authInfo.bankNo    "
                     label="本人实名银行卡"
                     name="本人实名银行卡"
                     maxlength="25"
                     :formatter="formatter"
                     :disabled='hasDisabled'
                     label-class="authTitle"
                     placeholder="请填写银行卡号"
                     @input="InputbankNo"
                     @focus="focusBankNo"//获取焦点事件
                     input-align="right" />
        </template>
        <van-button :class="isSumit?'saveTrue':'saveFalse'"
                    round
                    block
                    native-type="submit">下一步,添加收款信息</van-button>
      </van-form>

2、data 定义的数据

data() {
    return {
      authInfo: {
        bankNo: '', //银行卡
      },
      repeatauthInfo: {
        repeatbankNo: '', //修改银行卡信息
      },
      isInput: false,
      hasDisabled: false, //通过状态判断输入框是否可用
  },

3、计算属性判断按钮状态

   computed: {
      //计算属性判断是否校验通过,按钮状态
      isSumit() {
        if (
          this.authInfo.name &&
          this.authInfo.cardNo.length >= 15 &&
          this.authInfo.bankNo.length >= 10 &&
          this.authInfo.bankName &&
          this.authInfo.bankCity
        ) {
          if (this.isInput) {//如果修改输入内容 输入位数须超过10位才可通过校验
            if (this.repeatauthInfo.repeatbankNo.length >= 10) {
              return true
            } else {
              return false
            }
          }
          return true
        } else {
          return false
        }
      },
    },

4、对*数据做处理

因为如果authInfo.bankNo 值存在的话  是做了加密处理显示的带*号 ,但是用户输入的话是不允许有星号的,后台对有*号的是不校验的

  methods: {//如果存在数据后台返回的数据是带*号加密的
      //*号处理
      isStr(value) {
        let str = value
        let reg = new RegExp('[*]')
        if (reg.test(value)) {
          str = value.replace(/\*/g, '')
        }
        return str
      },
      //input 事件不允许用户输入*号
      InputcardNo(value) {//银行卡
        this.authInfo.cardNo = this.isStr(value)
      },
      repeatInputbankNo(value) {//修改银行卡
        this.repeatauthInfo.repeatbankNo = this.isStr(value)
      },
      //回显处理
      focusBankNo() {//银行卡焦点事件点击时修改状态
        if (this.authInfo.bankNo.indexOf('*') != -1) {
          this.isInput = true
          // this.repeatauthInfo.repeatbankNo == ''
        } else {
          this.isInput = false
        }
      },
      blurBankNo() {//失去焦点 存在值的话显示修改输入框否则显示原来输入框
        if (this.repeatauthInfo.repeatbankNo) {
          this.isInput = true
        } else {
          this.isInput = false
        }
      },
      //输入框去空格
      formatter(value) {
        return value.trim()
      },
      //获取实名信息
      getaccountInfo() {
        accountInfo().then((res) => {
          // console.log(res)
          this.authInfo = res.data
        })
      },
      //提交信息
      onSubmit(values) 
        setTimeout(() => {
          this.checkBlure(values)
        }, 500)
      },
      checkBlure(values) {
        const that = this
        if (!that.isSumit) {
          return
        } else if (!that.agreementFlag) {
          that.$message({
            type: 'error',
            message: '请勾选协议',
          })
        } else {
          //需要携带卡号bankNo
          let { bankNo } =this.authInfo
          let { repeatbankNo} = this.repeatauthInfo
          let params = {
            bankNo: repeatbankNo ? repeatbankNo : bankNo,
          }
          saveBank(params).then((res) => {
            // console.log(res)
            if (res.code == 200) {
              that.$router.push({
                path: '/settleAddAccount',
                query: { from: 'authentication' },
              })
              //身份证二要素校验失败
            } else if (
              res.code == 11020 ||
              res.code == 11005 ||
              res.code == 11019 ||
              res.code == 11021 ||
              res.code == 14002
            ) {
              that.showFailed = true
              that.showFailText = res.message //提示弹框
            }
          })
        }
      },
    },
    created() {
      this.getaccountInfo()
    },
  }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue+element开发使用el-select不能回显的处理方案

    目录 使用el-select不能回显的处理 el-select编辑数据不回显问题 使用el-select不能回显的处理 下拉框选择的时候,选不上下拉框的值,element提供了@change事件使用vm.$forceUpdate() 方法进行强制刷新,就可以把值渲染上去. $forceUpdate() <el-select v-model="price" clearable placeholder="请选择" @change="$forceUpdat

  • Vue下拉框回显并默认选中随机问题

    今天做vue的页面下拉框回显问题,回显数据是随机的,好奇怪,虽然多刷新 几下就可以了, 但是这个问题还是存在的,后来发现问题是 回显中的数据是两次请求,因为网络问题两次说不定哪个就请求的快一些, 因为调用的对象不一样,所以可能会不同,改为相同的之后,发现第一次请求的时间始终比第二次时间短一些,达到想要的效果 总结: 1.因为第一次加载下拉框列表的时候,请求列表中所有数据和列表默认回显数据不同,所以会出现被刷新,而出现回显随机问题,,, PS:vue 运用ElementUI,做select下拉框回

  • vue关于select组件绑定的值为数字类型的问题

    目录 select组件绑定的值为数字类型问题 number可以将绑定的 v-model 改为 number类型 若元素属性需要绑定的值为数字时的处理 1.如果直接这样写 2.解决 select组件绑定的值为数字类型问题 在日常开发中,我们双向绑定的form表单,经常会遇到对数字类型的绑定,但对于v-model 绑定的值,输入数字会自动转成字符串类型. 对于input输入框绑定的值,想要修改为数字类型很简单,只需要使用表单的修饰符就可以. 如下所示: number可以将绑定的 v-model 改为

  • element 结合vue 在表单验证时有值却提示错误的解决办法

    绑定的值与规则指定的值一定要相同------- 第一步: <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> 加上rules ref 第二部: <el-form-item label="活动名称" prop="na

  • vue修改数据的时候,表单值回显不正确问题及解决

    目录 修改数据的时候,表单值回显不正确 vue简单实现数据回显 1.回显输入框html 2.data 定义的数据 3.计算属性判断按钮状态 4.对*数据做处理 修改数据的时候,表单值回显不正确 如果在修改数据的时候,发现表单的值回显不正确,每次修改,都是第一次修改的值,这个可能是你的代码有问题. 如果出现上面的问题,请检查 (1) prop的数据是否绑定正确 <el-col :span="24">   <el-form-item label="图标"

  • vue修改数据页面无效的解决方案

    目录 vue修改数据页面无效 如下案例 有两种解决方案 更改数据后页面不刷新的问题 vue修改数据页面无效 项目开发的过程中,经常会遇到这种情况:为data中的某一个对象添加一个属性. 如下案例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="w

  • 解决vue中el-date-picker type=daterange日期不回显的问题

    目录 vue中el-date-picker type=daterange日期不回显 原始代码 问题发现及处理 el-date-picker 日期组件事件回显不生效 日期组件回显处理 本文说明 vue中el-date-picker type=daterange日期不回显 原始代码 <el-form-item class="form_bigt_p" label="项目起止时间:" prop="time">   <el-date-pi

  • Element-UI中<el-cascader />回显失败问题的完美解决

    目录 项目场景: 问题描述 原因分析: 解决方案: 一.多选赋值回显 二.单选赋值回显 总结 项目场景: 项目场景:接手了一些老项目,需要做一些日志相关的操作,从后台日志跳转到相应页面要带上原来的请求参数,涉及到一个回显问题 问题描述 Element-UI的 <el-cascader /> 这个组件,赋值之后它不会回显!而且后端返回的值只有最后一级的id,可是一个劲看文档.找资料浪费大半天,所以总结了一个比较完美的办法 原因分析: value 属性才是回显的关键,只有绑定了value属性才会让

  • vue+elementUI下拉框回显问题及解决方式

    目录 vue elementUI下拉框回显问题 正确回显格式应该是这样 而回显的确实这个值的id vue下拉框回显映射 单选框 多选框 级联框 总结 vue elementUI下拉框回显问题 在开发过程中,总会做到修改功能,但是在修改回显的时候,发现下拉框始终回显的是id而不是文本 下面看案例 正确回显格式应该是这样 而回显的确实这个值的id 原因是因为在给select复制的时候没有重新渲染,一开始我的编辑回显方法是这样 // 编辑回显 edit() { // 通过选中id查询信息 axios.

  • select、radio表单回显功能实现避免使用jquery载入赋值

    select,radio 表单回显避免使用jquery载入赋值 注意事项: 复制代码 代码如下: <html> <body> <form method="post" action=""> <!-- 如果表单中使用重置功能时,不推荐使用如下代码 --> <input type="radio" name="visible" value="1" />显示

  • layui表格数据复选框回显设置方法

    layui2.3版本,本身并不带有复选框回显功能,那么需要从源头解决此事,F12代码调试,找到与复选框关联的地方发现: 我们只需要在渲染数据回调时找到每个复选框根据数据的不同来设置回显. layui这里有一个坑,设置class属性后会造成二次点击效果,千万不要手动修改class属性,那么应该怎么办呢? 每次**点击**其中一个复选框时都会增加一个class属性,第二次点击又会给删除: table.render({ elem: '#LAY_table_topic', url: '/admin/to

  • element tree树形组件回显数据问题解决

    目录 1.当el-tree 从后台拿到数据动态回显展示出来时,只要有一个父节点,则下面的所有子节点全部被勾选了 2.解决方法代码如下 总结 解决vue+element tree组件 回显数据时有一个父节点数据下面子节点就都会被选中 1.当el-tree 从后台拿到数据动态回显展示出来时,只要有一个父节点,则下面的所有子节点全部被勾选了 如图所示: 后台返回的回显数据只有33(父节点组织管理)45(子节点个人管理),但是组织管理下的所有子节点都被回显选中. 2.解决方法代码如下 先在组件上绑定ch

  • vue组件表单数据回显验证及提交的实例代码

    最近项目需要到vue开发单页面,所以就研究一下表单数据的回显,验证及提交如何用vue组件的方式实现. 代码如下: <template> <div class="index"> <!--header-bar></header-bar--> <div style="margin:20px;"> <div class="item"> <p>住户名称:</p>

  • layui table数据修改的回显方法

    实现的样式给你们看一波 点击这锅按钮 其实回显就是一个赋值的操作,先把form表单的那些input 框的id拿到,在展示成功的那里进行绑值 table.on('tool(test)', function(obj) { var data = obj.data; // 获得当前行数据 var layEvent = obj.event; // 获得 lay-event 对应的值(也可以是表头的event 参数对应的值) var tr = obj.tr; // 获得当前行 tr 的DOM对象 if (l

随机推荐