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 ...
随机推荐
- 开始学习Docker啦--容器理论知识(一)
目录 一.容器核心技术 1.容器规范 2.容器 runtime 3.容器管理工具 4.容器定义工具 5.Registry 6.容器 OS 二.说说容器 1.什么是容器 Containers vs. v ...
- 一次Python爬虫的修改,抓取淘宝MM照片
这篇文章是2016-3-2写的,时隔一年了,淘宝的验证机制也有了改变.代码不一定有效,保留着作为一种代码学习. 崔大哥这有篇>>小白爬虫第一弹之抓取妹子图 不失为学python爬虫的绝佳教 ...
- EOS 资源汇总
EOS 资源汇总 A curated list of EOS Ecosystem by [SuperONE](https://superone.io/) EOS 主网 超级节点 https:/ ...
- linux 网络配置及远程连接
linux 网络配置及远程连接 前言 本文结合自己的经历主要讲述以Centos7为基础网络配置和远程连接的解决步骤 网络配置: 安装好centos7后,是上不了网的,配置步骤如下: (1).输入命令d ...
- 【C/C++开发】运算符重载二
C++中预定义的运算符的操作对象只能是基本数据类型.但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作.这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类 ...
- 数据结构 -- 二叉树(Binary Search Tree)
一.简介 在计算机科学中,二叉树是每个结点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用于实现二叉查找树和二叉堆. ...
- Spring Boot系列教程十二:Spring boot集成Redis
一.创建项目 项目名称为 "springboot_redis",创建过程中勾选 "Web","Redis",第一次创建Maven需要下载依赖 ...
- 正则与re模块
一.正则表达式 在线测试工具 http://tool.chinaz.com/regex/ 1.字符组 在同一个位置可能出现的各种字符组成一个字符组,在正则表达中用[ ]表示 一个正则就是一条匹 ...
- Python使用datetime来判断近七天
目录 strptime 使用strptime来格式化字符串 datetime.datetime.strptime("2019-10-02", "%Y-%m-%d" ...
- 《CAP定理》
分布式系统的最大难点,就是各个节点的状态如何同步.CAP 定理是这方面的基本定理,也是理解分布式系统的起点. 分布式系统的三个指标 这三个指标不可能同时做到——这个结论就叫做 CAP 定理. Part ...