vue.js实现单选框、复选框和下拉框示例


Posted in Javascript onJuly 18, 2017

Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势。下边以单选框、复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式。

一、单选框

  在传统的HTML中实现单选框的方法如下:

<div id="app"> 
 <input type="radio" name="gender" value="man" id="man"/><label for="man">男</label> 
 <input type="radio" name="gender" value="woman" id="women"/><label for="women">女</label> 
</div>

注:这里name属性值必须相同,以确保同一时间只有一个能被选中。同时用于识别发送至服务器的数据;value值也很重要,当按钮被选中时,该值将发送给服务器;

用vue.js实现单选框比较方便,举例如下。我们不再需要name属性,只需要使用v-model指令给每个选项绑定同一个变量就可以确保同一时间只有一个被选中,同时value属性还是需要的,表示选中时的值。

<div id="app"> 
 <label>男<input type="radio" v-model="gender" value="man"/></label> 
 <label>女<input type="radio" v-model="gender" value="woman"/></label> 
 <p>已选:{{gender}}</p><!--如果用原生js实现此功能比较麻烦--> 
</div> 
<script> 
 var app=new Vue({ 
  el:'#app', 
  data:{ 
   gender:'' 
  } 
 }); 
</script>

二、复选框

  在传统的HTML中实现复选框代码如下:

<div id="app"> 
 <input type="checkbox" name="whom" value="jack" id="Jack"/><label for="Jack">jack</label> 
 <input type="checkbox" name="whom" value="bob" id="Bob"/><label for="Bob">bob</label> 
 <input type="checkbox" name="whom" value="alice" id="Alice"/><label for="Alice">alice</label> 
</div>

从以上代码可以看到:HTML中单选框和复选框的构造方法类似,只是type值变成checkbox,同时也用name和value表征一个复选框以及选中情况。

在vue.js中构造复选框也与单选框类似,只是每个选项框都用v-model绑定一个变量,这些变量一般放在一个对象中,或者为v-model绑定一个相同的属性名称,且属性为数组;针对这两种情况的举例如下:

使用v-model为每个选项框绑定一个变量:

<div id="app"> 
 <label>jack<input type="checkbox" v-model="person.jack"/></label> 
 <label>bob<input type="checkbox" v-model="person.bob"/></label> 
 <label>alice <input type="checkbox" v-model="person.alice"/></label> 
 <p>已选:{{person}}</p> 
</div> 
<script> 
 var app = new Vue({ 
  el: '#app', 
  data: { 
   person: {jack: false, bob: false, alice: false} 
  } 
 }) 
</script>

从以上代码可以看到:这里已经不需要value属性,为每个属性绑定的值是boolean类型的,当选中时该值变为true,没选中为false;

给v-model绑定一个相同的数组类型的属性:

<div id="app"> 
 <label>jack<input type="checkbox" v-model="whom" value="jack"/></label> 
 <label>bob<input type="checkbox" v-model="whom" value="bob"/></label> 
 <label>alice <input type="checkbox" v-model="whom" value="alice"/></label> 
 <p>已选:{{whom.join('|')}}</p> 
</div> 
<script> 
 var app = new Vue({ 
  el: '#app', 
  data: { 
   whom: [] 
 } 
 }) 
</script>

从代码中可以看到:为每个选项都绑定一个相同的数组名称,这里需要value属性,当被选中时,相应的value值会加入到数组中,取消选中时,删除数组中对应的value值。

三、下拉框

传统的用HTML构造下拉框的代码如下:

<select name="selected"> 
 <option value="a">A</option> 
 <option value="b">B</option> 
 <option value="c">C</option> 
</select>

其中name用于发送给服务器时的数据识别,value为选中时发送给服务器的值。如果option中省略value,那么发送给服务器的值为option标签之间的值。

用vue2.0实现下拉框的方法如下:

<div id="app"> 
 <select v-model="selected"> 
  <option v-for="item in items" v-bind:value="item.value">{{item.text}}</option> 
 </select> 
 <span>已选:{{selected}}</span> 
</div> 
<script src="vue.js"></script> 
<script> 
 new Vue({ 
  el:'#app', 
  data:{ 
   items:[{text:'A',value:'a'},{text:'B',value:'b'},{text:'C',value:'c'}], 
   selected:'' 
  } 
 }); 
</script>

从代码中可以看到,使用v-for指令,避免重复书写option标签,同时用v-bind指令绑定value属性。当选中某一项时,该选项的value值赋给selected变量。

不管是html书写,还是vue实现,如果需要实现多选下拉框,只需要在select标签中写入multiple属性(同时vue中,selected变量初始化为一个空数组)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
List Information About the Binary Files Used by an Application
Jun 18 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
JS返回iframe中frameBorder属性值的方法
Apr 01 Javascript
JavaScript中reduce()方法的使用详解
Jun 09 Javascript
详解react-router如何实现按需加载
Jun 15 Javascript
Scala解析Json字符串的实例详解
Oct 11 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
利用vue重构有赞商城的思路以及总结整理
Feb 21 Javascript
Vue 实现输入框新增搜索历史记录功能
Oct 15 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
Jan 19 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
Jul 19 Javascript
浅谈JavaScript中this的指向问题
Jul 28 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
Jul 18 #Javascript
iscroll.js滚动加载实例详解
Jul 18 #Javascript
基于iScroll实现下拉刷新和上滑加载效果
Jul 18 #Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 #jQuery
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 #Javascript
iscroll动态加载数据完美解决方法
Jul 18 #Javascript
Angular4学习笔记之新建项目的方法
Jul 18 #Javascript
You might like
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
PyCharm代码格式调整方法
2018/05/23 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
应届大学生自荐信
2013/12/05 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
优秀党员获奖感言
2014/02/18 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python