elementui-自定表头和在input中遇见的问题

简介: elementui-自定表头和在input中遇见的问题

第一个问题:无法关闭 弹出框


<el-table :data="tableData" style="width: 100%">
  <el-table-column prop="date" label="金额" width="180">
    <template slot="header">
      <el-popover placement="top" width="160" v-model="visible">
        <div style="text-align: right; margin: 0">
          <input class="input" v-model="infoValue" />
          <el-button size="mini" type="text" @click="visible = false">取消</el-button>
          <el-button type="primary" size="mini" @click="okHander">确定</el-button>
        </div>
        <span slot="reference">
          <span>修改金额</span>
          <i class="el-icon-edit"></i>
        </span>
      </el-popover>
    </template>
  </el-table-column>
  <el-table-column prop="name" label="姓名" width="180">
  </el-table-column>
  <el-table-column prop="address" label="地址">
  </el-table-column>
</el-table>
<script>
new Vue({
  el: '#app',
  data: function() {
    return {
      visible: false,
      infoValue: '',
      tableData: [{
        date: '10',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      }, ]
    }
  },
  methods: {
    okHander() {
      //无法清除输入框中的值
      this.infoValue=''
      // 关闭弹窗
      this.visible = false;
    },
  }
})
</script>


1425695-20211108221202086-1787172434.gif

解决关闭弹窗办法


添加 ref="elpopoverRef",通过ref去关闭
<el-popover placement="top" ref="elpopoverRef" width="160" v-model="visible">
  <div style="text-align: right; margin: 0">
    <input class="input" v-model="infoValue" />
    <el-button size="mini" type="text" @click="visible = false">取消</el-button>
    <el-button type="primary" size="mini" @click="okHander">确定</el-button>
  </div>
  <span slot="reference">
    <span>修改金额</span>
    <i class="el-icon-edit"></i>
  </span>
</el-popover>
okHander() {
  // 关闭弹窗 失败
  // this.visible = false;
  //关闭弹窗 成功
  this.$refs.elpopoverRef.doClose()
},

1425695-20211108221210455-1068581719.gif

1425695-20211108221522684-1265780689.gif


解决清除输入框中的值


<el-popover ref="elpopoverRef" placement="top" width="160" v-model="visible">
  <div style="text-align: right; margin: 0">
    <input ref="inputIdDemo" class="input" v-model="infoValue" />
    <el-button size="mini" type="text" @click="visible = false">取消</el-button>
    <el-button type="primary" size="mini" @click="okHander">确定</el-button>
  </div>
  <span slot="reference">
    <span>修改金额</span>
    <i class="el-icon-edit"></i>
  </span>
</el-popover>
okHander() {
  // 关闭弹窗
  this.$refs.elpopoverRef.doClose();
  // 清除input框中的值,这样清除值会成功
  this.$refs.inputIdDemo.value=""
  //这样清除值会失败的哈
  this.infoValue='';
},


1425695-20211108221216433-1304109474.gif尾声


这个案例主要产生了两个奇怪的现象。


第一个就是通过this.visible = false;


无法关闭弹窗。


后来通过查询文档,通过


this.$refs.elpopoverRef.doClose();这样可以关闭弹窗


无法清除input框中的值。


最初我使用this.infoValue=''失败了


紧接着使用vue中的强制刷新但是失败了~


然后还使用了v-if来销毁input还是失败了


最后我只用ref重置value的值。没有想到竟然成功了


其实使用document.getElementById('xx').value=""


也可以将input中的值清空


所以:至于为什么会这样。我觉得应该是element-ui中的一个bug


遇见问题,多使用几种方式也许会有不一样的结果


相关文章
|
9月前
|
前端开发
css改input变输入框光标颜色demo效果示例(整理)
css改input变输入框光标颜色demo效果示例(整理)
|
Web App开发 JavaScript 程序员
如何去掉或者修改网页中的遮罩层,DIV等元素?
起因: 前几天女友在查资料写文章,打开一个网页,发现网页的被一个半透明的遮罩层给覆盖了(一个已经过期的组织活动 的网页,H5就将它遮盖了),就来问我怎么弄。
1611 0
|
1月前
几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段
几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段
|
9月前
elementui表格自定义表头的两种方法
这篇文章主要是总结了elementui-table表格怎么自定义表头,两种方式需求不一样,大家还有啥好的方法或者遇到的bug评论区留言大家一起解决。
402 0
|
10月前
输入框贴贴去除样式并插入到指定光标位置(contenteditable=“true“ 实现的输入框也支持)
输入框贴贴去除样式并插入到指定光标位置(contenteditable=“true“ 实现的输入框也支持)
80 0
|
7月前
|
JSON JavaScript 数据库
vue搜索表格功能,根据input输入框和下拉框传递的参数进行搜索
vue搜索表格功能,根据input输入框和下拉框传递的参数进行搜索
84 1
|
7月前
|
JavaScript
JQuery 获取选中多选框的value,合并成字符串传给后台
JQuery 获取选中多选框的value,合并成字符串传给后台
31 0
|
9月前
|
JavaScript
js鼠标离开-清除input输入框内的空格demo效果示例(整理)
js鼠标离开-清除input输入框内的空格demo效果示例(整理)
|
9月前
|
JavaScript
【项目经验】elementui--table表格自定义表头及bug
elementui--table表格自定义表头及bug(避坑)
176 0
|
9月前
|
前端开发 JavaScript