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 ...
随机推荐
- iOS笔试题04
1. Object-C有多继承吗?没有的话用什么代替? 1> OC是单继承,没有多继承 2> 有时可以用分类category和协议protocol来代替多继承 2. Object-C有私 ...
- 粒子系统与雨的效果 (DirectX11 with Windows SDK)
前言 最近在学粒子系统,看这之前的<<3D图形编程基础 基于DirectX 11 >>是基于Direct SDK的,而DXSDK微软已经很久没有更新过了并且我学的DX11是用W ...
- 性能优化-service进程防杀
service作为后台服务,其重要性不言而喻,但很多时候service会被杀死,从而失去了我们原本想要其发挥的作用,在这种情况下我们该如何确保我们的service不被杀死就是本节需要讨论的内容了 se ...
- 安卓计数器类APP推荐
1. Thing Counter - Google Play 上的应用 可添加多个计数器,同一页面展示,一行一个,操作直观方便: 可以更改计数器颜色,使页面更美观. 每个计数器有详情和历史记录 详情: ...
- Anaconda是什么?Anconda下载安装教程(1)
一.如果从事Python开发,配置环境需要安装两个包: 第一个安装开发工具,俗称IDE : 推荐使用 Pycharm 第二个安装开发工具包: Anaconda ps:Windows 下 Pycharm ...
- Nachos java版学习(二)
threads.Lock类 提 供 了 锁 以 保 证 互 斥. 在 临 界 代 码 区 的 两 端 执 行 Lock.acquire()和Lock.release()即可保证同时只有一个线程访问临界 ...
- 【数据结构】P1981 表达式求值
题目描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. 输入格式 一行,为需要你计算的表达式,表达式中只包含数字.加法运算符“++”和乘法运算符“×”,且没有括号,所有参与运算的数字 ...
- (二)SpringBoot之springboot开发工具的使用以及springboot插件的功能
一.springboot开发工具的使用 1.1 在项目中添加springoot开发工具 1.2 功能 修改代码后点击保存自动重启 二.springboot插件的功能 2.1 maven配置 <p ...
- Android 把枪/PDA 扫描头自回车没用 处理方法
XML 控件加上属性 android:imeOptions="actionNone"
- [JZOJ5465]道路重建--边双缩点+树的直径
题目链接 lueluelue 分析 这鬼题卡了我10发提交,之前做过一道类似的题目:https://rye-catcher.github.io/2018/07/09/luogu%E9%A2%98%E8 ...