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 相关文章推荐
js中window.open()的所有参数详细解析
Jan 09 Javascript
使用node.js半年来总结的 10 条经验
Aug 18 Javascript
使用pjax实现无刷新更改页面url
Feb 05 Javascript
JS实现控制表格内指定单元格内容对齐的方法
Mar 30 Javascript
jquery实现的蓝色二级导航条效果代码
Aug 24 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
Aug 06 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
利用vue-router实现二级菜单内容转换
Nov 30 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
webpack的pitching loader详解
Sep 23 Javascript
Vue路由守卫之路由独享守卫
Sep 25 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
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
iOS10推送通知开发教程
2016/09/19 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
Vue中CSS动画原理的实现
2019/02/13 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
python装饰器初探(推荐)
2016/07/21 Python
用Python设计一个经典小游戏
2017/05/15 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
使用python编写监听端
2018/04/12 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
pytorch 常用线性函数详解
2020/01/15 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
护理专业应届毕业生推荐信
2013/11/15 职场文书
数学国培研修感言
2014/02/13 职场文书
大学生英语演讲稿
2014/04/24 职场文书
经营目标管理责任书
2014/07/25 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
信息技术课教学反思
2016/02/23 职场文书