vue.js实现单选框、复选框和下拉框

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变量初始化为一个空数组)

时间: 2024-10-20 20:37:37

vue.js实现单选框、复选框和下拉框的相关文章

jquery选中将select下拉框中一项后赋值给text文本框

jquery选中将select下拉框中一项后赋值给text文本框,出现无法将第一个下拉框的value赋值给文本框 因为select默认选中第一项..在选择第一项时,便导致无法激发onchange事件.所以无法进行赋值给文本框 解决方法. select下拉框设置第一项做一个无用的占位option <script type="text/javascript">     function changeSelect(obj) {         var _this = obj;  

点击自定义下拉框以外的区域关闭下拉框

1.写一个下拉框 html部分: <div class="pull-left service-type mt-36"> <div id="currentService">第一<img style="margin-left: 5px" src="arrow.png"/></div> <ul class="service-option hidden">

ligerui多选动态下拉框

今天下午要求做一个支持多选的,并且插件用ligerui的,当时有点小懵了,因为没用过ligerui啊!而且按照API的介绍,我做得也很好啊,可是为什么就是显示不出来?据说有位小神比较厉害,请教来之,两个点过去了,依然无果................... 好吧,切入正题,首先要做一个ligerui的下拉框,必须在页面加载的时候就初始化一个下拉框来,要不你叫你妈来都不好使!(好吧,是我不会看API!) 先说说我现在的需求,我需要做一个类似于二级联动,有两个下拉框,一个是房屋类型,一个是房屋格局

快速解决js开发下拉框中blur与click冲突

在开发中我们会经常遇到blur和click冲突的情况.下面叙述了开发中常遇到的"下拉框"的问题,并提供了两种解决方案. 一.blur和click事件简述 blur事件:当元素失去焦点时触发blur事件:其为表单事件,blur和focus事件不会冒泡,其他表单事件都可以.click事件:当点击元素时触发click事件:所有元素都有此事件,会产生冒泡. 示例1:blur事件为表单事件 1 2 3 4 5 6 7 8 9 10 11 12 13 <input type="te

文本框,下拉框,单选框只读状态属性

文本框只读属性:readonly="true" 下拉框只读属性: disabled="disabled" 单选框只读属性: $("#<%=txtIsReply.ClientID%>").click(function () { return false; })

两个下拉框的纠葛

1.说明:后台传来两个list(datelist/weeklist)分别要放入两个下拉框,而且两个list的值一一对应,即datelist.get(i)与weeklist.get(i)值相等,要达到的效果是---->若选中第一个下拉框的值(假设值的索引为index),第二个下拉框的值必须也显示索引为index的option,反之亦然. 2.想法:由于考虑了第二个下拉框虽可以对应显示,但是显示之后,无论是恶意还是非恶意用户,都可能会对第二个下拉框重新进行选择,所以想着选中一个下拉框,第二个下拉框对

优化jeecg底层高级查询,支持bool值和下拉框查询

最近在用jeecg做项目,在使用高级查询的时候发现它不支持布尔值的查询以及列表的下拉框的查询,所以小编修改了底层代码,完善了高级查询,现在与大家一起分享.先上一张图给大家看一下修改前的高级查询. 它只支持了文本的查询以及日期格式的查询,很难满足在使用过程中的要求.所以小编把他的功能丰富了一下,下面把源码分享给大家. 首先先简单介绍一下jeecg高级查询的原理,一切的秘密都在DataGridTag这个标签类里面,在打开一个页面的时候,这个类会对页面的左右变迁进行初始化,以及对高级查询的页面进行构造

Jquery动态设置下拉框selected --(2018 08/12-08/26周总结)

1.Jquery动态根据内容设置下拉框selected 需求就是根据下拉框的值动态的设置为selected,本以为很简单,网上一大推的方法,挨着尝试了之后却发现没有一个是有用的.网上的做法如下: <select id="selectID "> <option>选择A</option> <option>选择B</option> <option>选择C</option> </select> //

地址联动下拉框实现

<head> <meta charset="UTF-8"> <title>地址联动下拉框实现</title> <link rel="stylesheet" type="text/css" href="reset.css"> <link rel="stylesheet" type="text/css" href="

Extjs 下拉框

刚刚熟练了easyui控件的使用,又開始了如今的这个项目. 这个项目是个半成品.前端使用的是Extjs控件,jsp中没有代码.就引用了非常多的js...于是乎有种不知所措了呀. . . 说实话特别的不想去看那些代码,第一是不熟悉,第二是太乱没条理,另一个原因界面连html不想看又不行,公司要做这个项目,你又不能跟公司领导说我不会,.所以还是硬着头皮看了一天. 大概了解后,就開始copy,past,将原模块中js原封不动的考到了jsp页面,于是乎就这样执行起来了,仅仅只是调用的不是我自己的方法.后