css模拟下拉框,vue获取双向绑定的值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了css模拟下拉框,vue获取双向绑定的值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4191字,纯文字阅读大概需要6分钟。
内容图文
原生的下拉框用vue获取值双向绑定简直不要太好用,Duang的一下就行了
< div id ="datePrice" > < select v-model ="selected" id ="dataSel" class ="dataSel" v-on:change ="change" > < option v-for ="item in dateList" v-bind:value ="item.date" v-text ="item.date" ></ option > </ select > </ div >
js:
var VMdate=new Vue({ el:‘#datePrice‘, data:{ selected:‘请选择日期‘, serviceType:0, dateList:[ {‘date‘:‘2016-11‘ }, {‘date‘:‘2016-10‘ }, {‘date‘:‘2016-09‘ }, //这里可以用ajax回调设置,做到动态获取], Apptype:0, num:true, input_disabled:true }, methods:{ change:function(){ console.log(this.selected); } } }, watch:{} });
下面是模拟下拉框框
< div class ="dataSelD fleft" id ="datePrice" > < i class ="icon-date-picker-green" ></ i > < input v-model ="selected" type ="text" v-bind:readonly ="input_disabled" id ="dataSel" class ="dataSel" v-on:click.stop ="setselUl" > < ul > < li class ="selLI" v-for ="item in dateList" v-bind:data-val ="item.date" v-text ="item.date" v-on:click.stop ="setSelectVal(item.date)" ></ li > </ ul > </ div >
但是原生的样子特别不好看 修改样式的时候几乎不可修改,所以大部分都是用其他标签模拟这个效果。但是在获取值 设置值的时候就多了许多js 不知道浏览器为什么不能用css修改这个下拉框框 感觉和奇怪估计以后会出现css可以修改吧;
下面是模拟下拉框框
< div class ="dataSelD fleft" id ="datePrice" > < i class ="icon-date-picker-green" ></ i > < input v-model ="selected" type ="text" v-bind:readonly ="input_disabled" id ="dataSel" class ="dataSel" v-on:click.stop ="setselUl" > < ul > < li class ="selLI" v-for ="item in dateList" v-bind:data-val ="item.date" v-text ="item.date" v-on:click.stop ="setSelectVal(item.date)" ></ li > </ ul > </ div >
用input代替seclet 下面东西用ui li 标签来模拟
css
.bill .detailMain .serviceCon1 .dataSelD{margin-top: 30px;position: relative;} .bill .detailMain .serviceCon1 .dataSelD ul{ display:none; left:37px;top:34px; position: absolute; width:165px; border: 1px solid #8aac20;border-top: none;z-index: 999; } .bill .detailMain .serviceCon1 .dataSelD ul li{ font-size:12px;height:28px; line-height: 20px;cursor: pointer; padding: 5px 0 5px 19px; background-color:#ffffff;} .bill .detailMain .serviceCon1 .dataSelD ul li:hover{ color:#ffffff;background-color:#8aac20; } .bill .detailMain .serviceCon1 .dataSelD .dataSel{width: 164px;height:34px; margin-left:38px;font-size: 14px;outline: none;cursor: pointer; background-image:url("/img/bill/icon-input-sel-bg.png"); background-position:147px 14px; background-repeat: no-repeat; background-size:10px 6px; padding: 0 70px 0 15px;border-radius: 0;border:1px solid #ababab;border-left:none;} .bill .detailMain .serviceCon1 .dataSelD .dataSel[disabled]{background-color:#ffffff;} .bill .detailMain .serviceCon1 .dataSelD .dataSel:focus, .bill .detailMain .serviceCon1 .dataSelD .dataSel:hover{ border-top: 0.5px solid #8aac20;border-bottom: 0.5px solid #8aac20;border-right: 0.5px solid #8aac20; }
css比较多 是个绿的主题 这个可以任意修改样式了 变成你想要的
js:
// 日期下拉框 var VMdate=new Vue({ el:‘#datePrice‘, data:{ selected:‘请选择日期‘, serviceType:0, dateList:[],//这里是回调设置的数组 num:true, input_disabled:true }, methods:{ setSelectVal:function(val){ $(‘.serviceCon1 .dataSelD ul‘).css(‘display‘,‘none‘); this.num=true; this.selected=val; getBillByDate(val,this.Apptype);//项目里面是请求了另一个接口 }, setselUl:function(){ if(this.num){ $(‘.serviceCon1 .dataSelD ul‘).css(‘display‘,‘block‘); this.num=false; }else{ $(‘.serviceCon1 .dataSelD ul‘).css(‘display‘,‘none‘); this.num=true; } } }, watch:{} });
// 模拟的下拉框框,首先解决就是框框的失去焦点的问题 这里用jq // 模拟框框的失去焦点事件 关闭框框下面的li标签的东西 $(document).on(‘click‘,function(e){ if(e.target.className==‘selLI‘){ $(‘.serviceCon1 .dataSelD ul‘).css(‘display‘,‘none‘); var $data_val= $(e.target).attr("data-val"); VMdate.selected=$data_val; } else{ $(‘.serviceCon1 .dataSelD ul‘).css(‘display‘,‘none‘); VMdate.num=true; } })
整体的大致思路
页面第一次加载 模拟的下拉框框 v-for循环一个数组,产生多个li标签,但是一开始是没有值的,什么也不会显示。
然后js运行到请求用户账单的接口,回调里面用设置vue实例里面的数组,触发视图更新。页面出现下拉框框的选择。
v-mode双向绑定一个变量到input框框上面 点击li标签的出现的值获取到 设置到vue实例里面的v-model的变量 实现双向绑定 视图更新,js也拿到了值 然后用这个值去请求。
因为是用input框框模拟的下拉框 所以需要jq额外设置失去焦点关闭下面出来li标签的选项,这里用的是绑定document一个点击事件,判断事件的event对象,框框是不是选项li,如果不是 统统执行隐藏ul的方法 如果点击的对象是下面的li标签 就设置vue实例的v-model的变量为li的值。
原文:http://www.cnblogs.com/fstgshow/p/6044816.html
内容总结
以上是互联网集市为您收集整理的css模拟下拉框,vue获取双向绑定的值全部内容,希望文章能够帮你解决css模拟下拉框,vue获取双向绑定的值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。