取消Vue双击显示编辑状态时的文字选中

背景描述

在很多情况下我们都会遇到这种情况,input一开始是只读状态,当用户双击的时候我们就可以让用户来修改我们的属性,然后在失去焦点的时候保存数据,并将状态继续保持到只读状态

问题分析

一般我用的状态切换是input中的disabled属性来实现只读的,但是当我们在从只读切换到编辑状态时,我们触发双击事件,但是双击事件他有默认行为(如我你的input中用value的话,他就会默认选中value,并让input失去焦点),然后你要手动点一下才会获取焦点
在这里插入图片描述

解决思路

  • 当切换状态的时候,我先吧我input中的value的值设置为空
  • 然后在$nextTick中通过DOM操作让元素获取焦点
  • 然后再把值,赋值回去

最终效果

在这里插入图片描述

虽然问题解决了,但是效果仍不是太好,有好的解决思路,欢迎来评论。

Vue 3 是一个流行的前端JavaScript框架,用于构建用户界面。在Vue中,实现被选中总价取消的功能通常涉及到组件的双向数据绑定、事件处理状态管理。这里是一个基本的实现思路: 1. 使用`v-model`指令在表单输入元素(如复选框)上创建双向数据绑定,这样可以轻松地追踪复选框的选中状态。 2. 监听复选框的`change`事件,以便在选中取消选中执行相应的逻辑。 3. 在事件处理函数中,根据复选框的状态更新总价,或者直接取消总价的显示。 这里是一个简单的例子来说明这个过程: ```html <template> <div> <!-- 复选框绑定到 selectedItems 模型 --> <input type="checkbox" v-model="selectedItems" @change="updateTotal"> <!-- 其他商品项 --> </div> <div v-if="totalPrice && selectedItems.length > 0"> 总价:{{ totalPrice }} </div> </template> <script> export default { data() { return { selectedItems: [], // 存储选中商品的数组 items: [/* 商品列表 */], // 商品数据 totalPrice: null // 总价初始化为null }; }, methods: { updateTotal() { // 计算选中商品的总价 this.totalPrice = this.selectedItems.reduce((sum, item) => { return sum + item.price; }, 0); // 如果没有商品被选中,则总价设置为0 if (this.selectedItems.length === 0) { this.totalPrice = 0; } } } }; </script> ``` 在这个例子中,当复选框的状态改变,`updateTotal`方法被调用,并更新`totalPrice`的值。如果没有任何商品被选中,则总价被设置为0。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值