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 简单图片导航插件jquery.imgNav.js
Mar 17 Javascript
js中if语句的几种优化代码写法
Mar 12 Javascript
JS获取随机数函数可自定义最小值最大值
May 08 Javascript
PHP实现的各种中文编码转换类分享
Jan 23 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
JQuery中解决重复动画的方法
Oct 17 Javascript
js实现移动端导航点击自动滑动效果
Jul 18 Javascript
详解javascript 正则表达式之分组与前瞻匹配
May 30 Javascript
clipboard.js在移动端复制失败的解决方法
Jun 13 Javascript
jquery插件开发模式实例详解
Jul 20 jQuery
layui使用form表单实现post请求页面跳转的方法
Sep 14 Javascript
微信小程序实现音乐播放器
Nov 20 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
对javascript和select部件的结合运用
2006/10/09 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
python正则表达式的使用
2017/06/12 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
python编程使用协程并发的优缺点
2018/09/20 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
员工自我鉴定
2013/10/09 职场文书
文秘自荐信
2013/10/20 职场文书
合伙经营协议书
2014/04/18 职场文书
预防煤气中毒方案
2014/06/16 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
面试自我评价范文
2014/09/17 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
婚礼迎宾词大全
2015/08/10 职场文书