翼度科技»论坛 编程开发 JavaScript 查看内容

vue中radio单选框如何实现取消选中状态问题

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
vue radio单选框如何取消选中状态


客户需求

单选radio选中后,再次点击需要可以取消选择功能
页面有很组多单选,要实现一个方法就能兼容   
话不多说直接上代码
  1.    <span v-for="item in radioData" :key="item.value">
  2.                           <input type="radio" @click="chcekRadio($event)" name="abutmentVal" v-model="myData.abutmentVal" :id="'Abutment'+ item.id" :value="item.id" />
  3.                           <label :for="'Abutment'+ item.id" :value="item.id">{{ item.name }}</label>
  4.                         </span>
复制代码
  1.  //vue中radio单选框单击取消选中状态
  2.     chcekRadio ($event) {
  3.       let _this = this;
  4.       let objVal = _this.myData[$event.target.name];
  5.       window.setTimeout(() => {
  6.         if (!!objVal && objVal == $event.target.value) {
  7.           $event.target.checked = false
  8.           _this.myData[$event.target.name] = ''
  9.         }
  10.       }, 0);
  11.     },
复制代码
如何获取radio的选中值 、选中状态


方法1

设置v-model
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>test</title>  
  6.     <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>  
  7. </head>  
  8. <body>  
  9.     <div id='app'>
  10.       <input type="radio" name="test" v-for="(item,index) in list" :value="item.value" v-model="checkedValue">
  11.       <button @click="test">获取选中的值</button>
  12.     </div>
  13. <script>
  14. var vm = new Vue({
  15.   el:'#app',
  16.   data(){
  17.     return{
  18.       checkedValue:'',
  19.       list:[{value:1},{value:2},{value:3}]
  20.     }
  21.   },
  22.   methods:{
  23.     test(){
  24.       console.log('被选中的值为:'+this.checkedValue)
  25.     }
  26.   }
  27. });
  28. </script>
  29. </body>  
  30. </html>  
复制代码
方法2

如果不想每次点击都判断,那就提供一个思路,定义一个radio数组list,每项设置一个isCheck标识,循环该数组渲染radio,点击按钮时再统一去判断
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>test</title>  
  6.     <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>  
  7. </head>  
  8. <body>  
  9.     <div id='app'>
  10.       <input type="radio" name="test" v-for="(item,index) in list" :value="item.value" :checked="item.isCheck" @change="changeInput(index)">
  11.       <button @click="test">获取选中的值</button>
  12.     </div>
  13. <script>
  14. var vm = new Vue({
  15.   el:'#app',
  16.   data(){
  17.     return{
  18.       list:[{value:1,isCheck:false},{value:2,isCheck:false},{value:3,isCheck:false}]
  19.     }
  20.   },
  21.   methods:{
  22.     changeInput(index){
  23.       this.list.map((v,i)=>{
  24.         if(i==index){
  25.           v.isCheck = true
  26.         }else{
  27.           v.isCheck = false
  28.         }
  29.       })
  30.     },
  31.     test(){
  32.       this.list.map((v,i)=>{
  33.         if(v.isCheck){
  34.           console.log('被选中的值为:'+v.value)
  35.         }
  36.       })
  37.     }
  38.   }
  39. });
  40. </script>
  41. </body>  
  42. </html>  
复制代码
总结

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

来源:https://www.jb51.net/article/284082.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具