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 相关文章推荐
23个Javascript弹出窗口特效整理
Feb 25 Javascript
namespace.js Javascript的命名空间库
Oct 11 Javascript
商城常用滚动的焦点图效果代码简单实用
Mar 28 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
jQuery设置和移除文本框默认值的方法
Mar 09 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
javascript图片预览和上传(兼容IE)
Mar 15 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
微信小程序自定义组件实现环形进度条
Nov 17 Javascript
js通过循环多张图片实现动画效果
Dec 19 Javascript
vue实现div单选多选功能
Jul 16 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
PHP的5个安全措施小结
2012/07/17 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
详解VUE 数组更新
2017/12/16 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
JavaScript中this函数使用实例解析
2020/02/21 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
简单谈谈Python流程控制语句
2016/12/04 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
python实现简单学生信息管理系统
2020/04/09 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python