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 相关文章推荐
在网页中控制wmplayer播放器
Jul 01 Javascript
javascript事件模型代码
Jul 01 Javascript
jquery 批量上传图片实现代码
Jan 28 Javascript
jQuery中children()方法用法实例
Jan 07 Javascript
asp.net中oracle 存储过程(图文)
Aug 12 Javascript
JS提交form表单实例分析
Dec 10 Javascript
浅谈如何实现easyui的datebox格式化
Jun 12 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
label+input实现按钮开关切换效果的实例
Aug 16 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
ES10的13个新特性示例(小结)
Sep 23 Javascript
JS绘图Flot如何实现可选显示曲线图功能
Oct 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中feof()函数实例测试
2014/08/23 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
Python实现的简单hangman游戏实例
2015/06/28 Python
Python 通配符删除文件的实例
2018/04/24 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
python 实现return返回多个值
2019/11/19 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
.net面试题
2016/09/17 面试题
自荐信如何“自荐”
2013/10/24 职场文书
迟到检讨书大全
2014/01/25 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
地球一小时宣传标语
2014/06/24 职场文书
会计求职自荐信范文
2015/03/04 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python
Android 中的类文件和类加载器详情
2022/06/05 Java/Android