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 相关文章推荐
jquery ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
jQuery实现简单隔行变色的方法
Feb 20 Javascript
基于javascript实现句子翻牌网页版小游戏
Mar 23 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
全面了解函数声明与函数表达式、变量提升
Aug 09 Javascript
jQuery代码实现实时获取时间
Jan 29 Javascript
基于vue2实现上拉加载功能
Nov 28 Javascript
详解mpvue开发小程序小总结
Jul 25 Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 Javascript
JS隐藏号码中间4位代码实例
Apr 09 Javascript
原生JS实现图片懒加载之页面性能优化
Apr 26 Javascript
es6函数之rest参数用法实例分析
Apr 18 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
php将数据库导出成excel的方法
2010/05/07 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
Python实现图片转字符画的代码实例
2019/02/22 Python
django自带调试服务器的使用详解
2019/08/29 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
浅析matlab中imadjust函数
2020/02/27 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
性能测试工程师的面试题
2015/02/20 面试题
结构工程个人自荐信范文
2013/11/30 职场文书
培训自我鉴定
2014/01/31 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
自荐信如何制作?
2014/02/21 职场文书
2015年库房工作总结
2015/04/30 职场文书
第二次离婚起诉书
2015/05/18 职场文书
行政处罚告知书
2015/07/01 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书