vue实现单选框的再次点击取消选中|青训营笔记

636 阅读2分钟

这是我参加「第四届青训营」笔记创作活动的第一天
问题:如何使用vue实现单选按钮的再次点击取消选中?
这是我在完成大项目过程中遇到的一个小问题,但是当时脑海中想不到一些简单直观的处理方法。
于是我就去研究了一下实现这个功能的具体办法,分享给大家。

1.首先给单选框绑定一个点击事件。toggleChecked($event)

image.png
注意这个事件要添加$event从而实现对标签元素的dom获取或者修改标签指的属性等等。
从而可以拿到这个button的dom树中的checked属性,可以判断出该单选框是否已经选中。
谈到这里就简单讲一下e.target.value获取的就是你选择接收事件的元素输入的或者选择的值。具体e.target和this的区别打算明天详细整理一下。

Snipaste_2022-08-20_18-00-46.png

2.点击事件toggleChecked($event)

data中引入的参数:index
image.png

methods中定义的方法:toggleChecked()
image.png
通过引入参数index,来判断是否该选项是否已经选过,若未选过则给它赋初值,如果已经选过,index === e.target.valuee.target.checked = !e.target.checked 使checked值取反。从而实现单选按钮的再次点击取消选中

3.当遇到多个单选框时候

data中需要初始化的三个参数:
image.png

methods中定义的方法:
image.png
额外引入了enterprise参数和depList数组,用于存放和判断不同单选框的value值,从而实现不同单选框之间再次点击取消选中功能的不冲突。

ps.尝试过不引入参数index,想依靠checked实现单选框的再次点击取消选中,发现是不可行的。

比如这样子
image.png
但是后来发现是不可行的, 因为每次点击选项的时候,都会使target.checked变为true,而当事件触发时,
如果语句事件写的是true触发,取反变为false,则这个选项永远checked值都是false,结果就是这个选项永远无法变成选中状态。
如果语句事件写的是false触发,取反变为true,那么这个选项,在第一次true进来时候就永远不会执行了,则事件无效,一直是选中状态。

小结:以上就是我遇到这个问题时候进行查阅分析得出的一些浅知拙见,如有其他想法,很愿意和大伙讨论。