Vue 日期下拉框
<!-- html -->
<template>
<!-- 控件样式 -->
<div class="select">
<div class="select_button" v-if="selectType === '1'" @click='selectAction'>
<div class="title_view">
<div class="title" v-if='selectValue.length===0'> {{title}} </div>
<div class="title" v-else> {{selectValue}} </div>
</div>
<img src="../../assets/select.png" class="select_photo">
</div>
<!-- 控件点选样式 -->
<div class="suite_view" ref='suite' v-if='isShow'>
<ul class="item_view" v-if="items.length > 0">
<li class="item" v-for='item in items' :key='item' @click='selectItemAction'>{{item}}</li>
</ul>
<ul class="item_view" v-else>
<li class="item" v-for='day in days' :key='day' @click='selectItemAction'>{{day}}</li>
</ul>
</div> <!--不可选-->
<div class="select_button" v-if="selectType === '2'">
<div class="title_view">
<div class="title" v-if='selectValue.length===0' style="color: gray"> {{title}} </div>
<div class="title" style="color: gray" v-else> {{selectValue}} </div>
</div>
<img src="../../assets/selectNO.png" class="select_photo">
</div> </div>
</template> <!-- js -->
<script>
export default {
name: 'select',
props: {
selectType: '', // 该值为1:可点选,2:不可点选
title: '',
unit: '',
items: {
type: Array,
default: function () {
return []
}
}
},
data () {
return {
isShow: false,
selectValue: '',
days: []
}
},
methods: {
// 点击 弹出套件
selectAction: function () {
this.isShow = !this.isShow
this.$emit('selectAction')
},
// 获取用户点选的数值 并且传给父控件
selectItemAction: function () {
this.isShow = !this.isShow
this.selectValue = event.target.innerText
this.$emit('itemSelectAction', this.selectValue)
},
// 通过 $refs 操作执行该方法(通过判断平年闰年来确定日期)
calculationOfDay: function (year, month) {
year = parseInt(year)
month = parseInt(month)
// 闰年
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
this.setDays(31)
} else {
// 二月份 闰年28天
if (month === 2) {
this.setDays(29)
} else {
this.setDays(30)
}
}
} else {
// 平年
if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
this.setDays(31)
} else {
// 二月份 闰年28天
if (month === 2) {
this.setDays(28)
} else {
this.setDays(30)
}
}
}
},
setDays: function (max) {
this.days = [] // 清空
for (var i = 1; i <= max; i++) {
this.days.push(i)
}
},
setDefaultValue: function (value) {
this.selectValue = value
}
},
created () {
// 设置日期默认值
this.setDays(30)
},
mounted () {
} }
</script> <!-- css -->
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.select {
height: 3rem;
width: 25vw;
}
.select_button {
height: 100%;
width: 100%;
border-style: solid;
border-width: 0.05rem;
border-color: black;
display: flex;
flex-direction: row;
align-items: center;
}
.title_view {
width: 18vw;
/*height: 100%;*/
/*background-color: red;*/
display: flex;
flex-direction: row;
align-items: center;
}
.title {
width: 100%;
font-size: 1rem;
text-align: center;
color: black;
/*background-color: blue;*/
}
.select_photo {
margin-left: 1vw;
height: 1rem;
width: 1rem;
}
.suite_view {
position: absolute;
-webkit-overflow-scrolling: touch;
/*margin-top: 0.1rem;*/
height: 13rem;
width: 25.5vw;
background-color: lightgray;
display: flex;
flex-direction: column;
align-items: center;
overflow-y: scroll;
font-size: 1rem;
text-align: center;
}
.item_view {
padding: 0;
width: 100%;
}
.item {
width: 100%;
margin-top: 0.5rem;
font-size: 1rem;
color: black;
text-align: center;
}
</style>
Vue 日期下拉框的更多相关文章
- vue获取下拉框值
vue获取下拉框的值,用vue-modle,只有点击下拉框的值才会赋值到下拉框中,初始时下拉框没有数据,而改用$event就不会出现这样的问题,下面看代码以及图解: v-model解决方式: < ...
- vue select下拉框绑定默认值
vue select下拉框绑定默认值: 首先option要加value值,以便v-model可以获取到对应选择的值 一.当没有绑定v-model,直接给对应的option加selected属性 二.当 ...
- VUE 单选下拉框Select中动态加载 默认选中第一个
<lable>分类情况</lable> <select v-model="content.tid"> <option v-for=&quo ...
- vue实现下拉框全选和输入匹配
实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...
- vue自定义下拉框组件
创建下拉框组件 Select.vue <template> <div class="selects"> <div :class="{sele ...
- vue+element下拉框样式的点击按钮
项目中点击按钮实在太多了,怎么办呢?我们就可以将它们制作成像下拉框那样的类似操作 1.HTML样式部分:关键点在于command 方法和属性 1 <el-dropdown 2 size=&quo ...
- vue 根据下拉框动态切换form的rule
taskCategorySelect (val) { // 任务类别下拉选择 if ( val == 5 ) { this.cameraORgateway = false; // true不可以使用 ...
- vue 树形下拉框 亲测 好用
https://vue-treeselect.js.org/ 顺带说一个开发中使用这个组件遇到的问题,关于回显之后无法修改的问题 找了很长时间 原因是数据类型导致的问题,数组里面应该是数字类型,直接 ...
- Vue中-下拉框可以选择可以填写
<el-form-item label="方法名称"> <el-autocomplete popper-class="my-autocomplete&q ...
随机推荐
- dozer工具类
jar:commons-beanutils-1.9.3.jar.commons-lang-2.6.jar.dozer-5.3.2.jar.jcl-over-slf4j-1.7.25.jar.slf4j ...
- redis 内存数据库
redis,如果key存在test:a:b 有冒号情况,则在RedisDesktopManager 工具中,可以分文件夹 操作hash // //操作哈希 // client.SetEntryInHa ...
- C#数字除法
C#中计算double a=1/1000:应该结果是0.001,但为什么会变成0呢? C# 中 如果相除的两个数都是整数(int 型) 那么除的结果就是只取整数部分 所以你才会取到0 如果你要取精确的 ...
- JPEG2000开发SDK及其特点
JPEG2000开发SDK及其特点 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:JPEG2000被开发来取代JPEG,但因为大量核心算法被专利注册, ...
- 51.Qt-使用ajax获取ashx接口的post数据
由于当前C++项目需要使用ajax库去post调用ashx接口,接口地址如下所示: 需要传递的参数如下: 然后发现qml比较好调用ajax.js库,所以本章通过C++界面去获取qml方法来实现调用as ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- C#传递参数调用exe程序
今天公司让我把Winform程序里的一块单独成一个exe文件,从原程序中打开新的exe程序,这就涉及到参数的传递,故来记录下传递参数到exe程序的方式 第一种方式 首先在程序A中添加引用using S ...
- 读取一整行,保留空白,直到遇到换行符:getline()
- Nginx 不支持WebSocket TCP
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
- c#获取本月有哪些周六、周日
最近项目中有用到本月所有的周六,周日,特此分享一下! 算法思路:写一个循环,条件为本月开始日期.本月截至日期,通过循环获取第一个周六,加一天就是周日,每增加六天就是下一个周六,依次类推,循环到月末 代 ...