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 ...
随机推荐
- 【C#设计模式2】简单工厂模式
我们在编程的时候,每当"new"一个对象之后,这个对象就依赖于这个类了.如果在后期的维护过程中由于某些原因需要修改一下这个类,则唯一的做法就是打开源代码,进行修改,修改所有与这个对 ...
- Navicat安装及使用
一.安装Navicat 1.下载安装文件:navicat11.0.17_premium_cs_x86.exe(32位) 2.Oracle 的 Instance Client:instantclient ...
- 区块链学习(四)truffle部署编译智能合约以太坊私有链
前面我们介绍了以太坊私有链的搭建以及多节点私有链网络,这次我们介绍如何使用truffle框架来部署编译智能合约到我们之前搭建的私有链网络中. 搭建环境及需使用的工具:ubuntu18.04 Truf ...
- Win10下 jdk的安装
jdk 的下载地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在 D 盘 ...
- uwp,右键浮出获取DataContext(数据上下文)
列表视图类控件,如ListView/GridView,有时项目需要按下右键浮出选项,来获取Item的DataContext. 下面的示例代码,事先我已经有了一个自定义类Video,并且已经绑定了数据源 ...
- 轮播图CSS
css3中的animation:动画名 持续时间 动画的速度曲线 动画开始之前的延迟 动画播放的次数 是否应该轮流反向播放动画 动画播放次数:n(定义应该播放多少次动画) : infinite(无限循 ...
- 图解JS
弱语言 数据类型 隐式转换 弱等于 严格等于 包装对象 字符串转为包装对象 类型检测 表达式 运算符 块 try...catch 对象结构 创建对象,原型链 属性读写 getter,setter 序列 ...
- mac 已损坏 移至废纸篓
1.问题描述: 从网页下载的安装包,总是提示“已损坏,移至废纸篓”这类的信息 2.原因: 系统版本过高,对安全性进行了校验. 3.解决方案:命令行输入以下命令,然后输入密码 sudo spctl -- ...
- [转帖]新手必读,16个概念入门 Kubernetes
新手必读,16个概念入门 Kubernetes https://www.kubernetes.org.cn/5906.html 2019-09-29 22:13 中文社区 分类:Kubernetes教 ...
- 自定义 Win10 系统鼠标右键发送到的选项
系统默认的右键「发送到」菜单只有几个特定的项目,如果要想发送到其他目标,可通过在资源管理器地址栏中访问 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\S ...