image.png

自己修改源的源码更加方便好用!粘贴即用,不明白的可以问我wx: xin32934

Mdate.js

是一款依托于iScroll.js的日期选择小型插件,可滑动选择年、月、日,只适用于移动端。

操作简易,只需要在页面中引入iScroll.js和Mdate.js即可。

使用说明

new Mdate("dateShowBtn", {

//"dateShowBtn"为你点击触发Mdate的id,必填项

acceptId: "dateSelectorTwo",

//此项为你要显示选择后的日期的input,不填写默认为上一行的"dateShowBtn"

beginYear:'',

//此项为Mdate的初始年份,不填写默认为当前及以前的日期

beginMonth: '',

//此项为Mdate的初始月份,不填写默认为当前及以前的日期

beginDay: "",

//此项为Mdate的初始日期,不填写默认为当前及以前的日期

endYear: "",

//此项为Mdate的结束年份,不填写默认为当年

endMonth: "",

//此项为Mdate的结束月份,不填写默认为当月

endDay: "",

//此项为Mdate的结束日期,不填写默认为当天

format: "yyyy-mm",

//此项为Mdate需要显示的格式,可填写"/"或"-"或".",不填写默认为年月日

success:function(e){//点击确定按钮回调

alert(e)//弹出选择的时间

}

})

Mdate.js修改之的源后代码

(function() {

var d = document;

var dateopts = {

beginYear: 2000,

beginMonth: 1,

beginDay: 1,

endYear: new Date().getFullYear(),

endMonth: new Date().getMonth() + 1,

endDay: new Date().getDate(),

format: "YMD"

};

var MdSelectId = "";

var MdAcceptId = "";

var dateContentBox = "";

var datePlugs = "";

var yearTag = "";

var monthTag = "";

var dayTag = "";

var indexY = 1;

var indexM = 1;

var indexD = 1;

var initM = null;

var initD = null;

var yearScroll = null;

var monthScroll = null;

var dayScroll = null;

var Mdate = function(el, opts) {

if(!opts) {

opts = {}

}

this.id = el;

this.selectorId = d.getElementById(this.id);

this.acceptId = d.getElementById(opts.acceptId) || d.getElementById(this.id);

this.beginYear = opts.beginYear || dateopts.beginYear;

this.beginMonth = opts.beginMonth || dateopts.beginMonth;

this.beginDay = opts.beginDay || dateopts.beginDay;

this.endYear = opts.endYear || dateopts.endYear;

this.endMonth = opts.endMonth || dateopts.endMonth;

this.endDay = opts.endDay || dateopts.endDay;

this.format = opts.format || dateopts.format;

this.success= opts.success;

this.dateBoxShow()

};

Mdate.prototype = {

constructor: Mdate,

dateBoxShow: function() {

var that = this;

that.selectorId.onclick = function() {

that.createDateBox();

that.dateSure()

}

},

createDateBox: function() {

var that = this;

MdatePlugin = d.getElementById("MdatePlugin");

if(!MdatePlugin) {

dateContentBox = d.createElement("div");

dateContentBox.id = "MdatePlugin";

d.body.appendChild(dateContentBox);

MdatePlugin = d.getElementById("MdatePlugin")

}

MdatePlugin.setAttribute("class", "slideIn");

that.createDateUi();

var yearUl = d.getElementById("yearUl");

var monthUl = d.getElementById("monthUl");

var dayUl = d.getElementById("dayUl");

yearUl.innerHTML = that.createDateYMD("year");

that.initScroll();

that.refreshScroll()

},

createDateUi: function() {

var that=this;

if(that.format=='yyyy-mm'){

var str = "" + '' + '' + '

' + '取消' + '确定' + "

" + '

' + '

' + '

" + '

' + '

" + '

' + '

" + "

" + "";

}else{

var str = "" + '' + '' + '

' + '取消' + '确定' + "

" + '

' + '

' + '

" + '

' + '

" + '

' + '

" + "

" + "";

}

MdatePlugin.innerHTML = str

},

createDateYMD: function(type) {

var that = this;

var str = "

";

var beginNum = null,

endNum = null,

unitName = "年",

dataStyle = "data-year";

if(type == "year") {

beginNum = that.beginYear;

endNum = that.endYear

}

if(type == "month") {

unitName = "月";

dataStyle = "data-month";

beginNum = that.beginMonth;

endNum = 12;

if(yearTag != that.beginYear) {

beginNum = 1

}

if(yearTag == dateopts.endYear) {

endNum = that.endMonth

}

}

if(type == "day") {

unitName = "日";

dataStyle = "data-day";

beginNum = 1;

endNum = new Date(yearTag, monthTag, 0).getDate();

if(yearTag == that.beginYear && monthTag == that.beginMonth) {

beginNum = that.beginDay

}

if(yearTag == that.endYear && monthTag == that.endMonth) {

endNum = that.endDay

}

}

for(var i = beginNum; i <= endNum; i++) {

str += "

" + that.dateForTen(i) + unitName + ""

}

return str + "

"

},

initScroll: function() {

var that = this;

yearScroll = new iScroll("yearwrapper", {

snap: "li",

vScrollbar: false,

onScrollEnd: function() {

indexY = Math.ceil(this.y / 40 * -1 + 1);

yearTag = yearUl.getElementsByTagName("li")[indexY].getAttribute("data-year");

monthUl.innerHTML = that.createDateYMD("month");

monthScroll.refresh();

try {

monthTag = monthUl.getElementsByTagName("li")[indexM].getAttribute("data-month")

} catch(err) {

return true

}

dayUl.innerHTML = that.createDateYMD("day");

dayScroll.refresh();

try {

dayTag = dayUl.getElementsByTagName("li")[indexD].getAttribute("data-day")

} catch(err) {

return true

}

}

});

monthScroll = new iScroll("monthwrapper", {

snap: "li",

vScrollbar: false,

onScrollEnd: function() {

indexM = Math.ceil(this.y / 40 * -1 + 1);

if(indexM == 1 && yearTag != that.beginYear) {

monthTag = 1

} else {

monthTag = monthUl.getElementsByTagName("li")[indexM].getAttribute("data-month")

}

dayUl.innerHTML = that.createDateYMD("day");

dayScroll.refresh();

try {

dayTag = dayUl.getElementsByTagName("li")[indexD].getAttribute("data-day")

} catch(err) {

return true

}

}

});

dayScroll = new iScroll("daywrapper", {

snap: "li",

vScrollbar: false,

onScrollEnd: function() {

indexD = Math.ceil(this.y / 40 * -1 + 1);

if(indexD == 1 && monthTag != that.beginMonth) {

dayTag = 1

} else {

dayTag = dayUl.getElementsByTagName("li")[indexD].getAttribute("data-day")

}

}

})

},

refreshScroll: function() {

var that = this;

var inputYear = that.acceptId.getAttribute("data-year");

var inputMonth = that.acceptId.getAttribute("data-month");

var inputDay = that.acceptId.getAttribute("data-day");

inputYear =inputYear ||new Date().getFullYear();

inputMonth = inputMonth ||new Date().getMonth()+1;

inputDay = inputDay || new Date().getDate();

initM = that.beginMonth;

initD = that.beginDay;

if(inputYear != that.beginYear && initM != 1) {

initM = 1

}

if(inputMonth != that.beginMonth && initD != 1) {

initD = 1

}

inputYear -= that.beginYear;

inputMonth -= initM;

inputDay -= initD;

yearScroll.refresh();

yearScroll.scrollTo(0, inputYear * 40, 300, true);

monthScroll.scrollTo(0, inputMonth * 40, 300, true);

dayScroll.scrollTo(0, inputDay * 40, 300, true)

},

dateSure: function() {

var that = this;

var sureBtn = d.getElementById("dateSure");

var cancelBtn = d.getElementById("dateCancel");

sureBtn.onclick = function() {

if(that.format == "YMD") {

that.acceptId.value = yearTag + "年" + monthTag + "月" + dayTag + "日"

}else if(that.format=='yyyy-mm'){

that.acceptId.value = yearTag + '-' + that.dateForTen(monthTag)

}else {

that.acceptId.value = yearTag + that.format + that.dateForTen(monthTag) + that.format + that.dateForTen(dayTag)

}

that.acceptId.setAttribute("data-year", yearTag);

that.acceptId.setAttribute("data-month", monthTag);

that.acceptId.setAttribute("data-day", dayTag);

that.dateCancel()

that.success(that.acceptId.value)

};

cancelBtn.onclick = function() {

that.dateCancel()

}

},

dateForTen: function(n) {

if(n < 10) {

return "0" + n

} else {

return n

}

},

dateCancel: function() {

MdatePlugin.setAttribute("class", "slideOut");

setTimeout(function() {

MdatePlugin.innerHTML = ""

}, 400)

},

};

if(typeof exports !== "undefined") {

exports.Mdate = Mdate

} else {

window.Mdate = Mdate

}

})();

Mdate.css文件

html, body{padding: 0; margin: 0; border: 0; vertical-align:

baseline; font-size: 15px; color: #333; }

*,

*:before,

*:after{

padding: 0;

margin: 0;

-webkit-box-sizing: border-box;

box-sizing: border-box;

font-family: "Microsoft Yahei", "Helvetica Neue", Arial, Helvetica,

sans-serif;

word-break: break-all;

}

*:focus { outline: none; }

.fl{float: left;}

.fr{float: right;}

/*选择日期*/

.getDateBg{

width: 100%;

height: 100%;

background-color: rgba(0,0,0,0.7);

position: fixed;

left: 0;

top: 0;

z-index: 100;

transition: opacity 0.4s;

opacity: 0;

}

.getDateBox{

width: 100%;

position: fixed;

left: 0;

background-color: #fff;

box-shadow: -5px 0 5px rgba(0,0,0,0.3);

z-index: 101;

transition: bottom 0.4s;

bottom: -270px;

}

.slideIn{

display: block !important;

}

.slideIn .getDateBox{

animation: slideIn 0.4s;

-webkit-animation: slideIn 0.4s;

bottom: 0;

}

.slideOut .getDateBox{

animation: slideOut 0.4s;

-webkit-animation: slideOut 0.4s;

bottom: -400px;

}

.slideIn .getDateBg{

opacity: 1;

}

.slideOut .getDateBg{

opacity: 0;

}

.getDateBox .choiceDateTitle{

height: 2.933rem;

background-color: #f2f2f2;

}

.getDateBox .choiceDateTitle button{

height: 100%;

padding: 0 1.333rem;

color: #00c599;

font-size: 1.0rem;

background: none;

border: 0;

-webkit-tap-highlight-color: rgba(0,0,0,0.2)

}

.getDateBox .dateContent{

width: 100%;

margin: 3.0rem 0;

height: 120px;

overflow: hidden;

position: relative;

}

.getDateBox .dateContent:before{

content: "";

width: 100%;

height: 40px;

background: -webkit-linear-gradient(top, rgba(255,255,255,1), rgba(255,255,255,0));

position: absolute;

left: 0;

top: 0;

z-index: 10;

pointer-events: none;

}

.getDateBox .dateContent:after{

content: "";

width: 100%;

height: 40px;

background: -webkit-linear-gradient(bottom, rgba(255,255,255,1), rgba(255,255,255,0));

position: absolute;

left: 0;

bottom: 0;

z-index: 10;

pointer-events: none;

}

.getDateBox .dateContent .checkeDate{

width: 100%;

height: 40px;

position: absolute;

left: 0;

top: 40px;

}

.getDateBox .dateContent .checkeDate:before,

.getDateBox .dateContent .checkeDate:after{

content: "";

width: 100%;

height: 1px;

background-color: #ccc;

position: absolute;

left: 0;

top: 0;

transform: scaleY(0.5);

-webkit-transform: scaleY(0.5);

}

.getDateBox .dateContent .checkeDate:after{

top: auto;

bottom: 0;

}

#yearwrapper,

#monthwrapper,

#daywrapper{

width: 33.3%;

height: 100%;

position: absolute;

top: 0;

}

#yearwrapper{

left: 0;

}

#daywrapper{

right: 0;

}

#monthwrapper{

left: 33.3%;

}

#yearwrapper ul{

margin-left: 40%;

}

#daywrapper ul{

margin-right: 40%;

}

#yearwrapper ul li,

#monthwrapper ul li,

#daywrapper ul li{

height: 40px;

line-height: 40px;

font-size: 0.933rem;

text-align: center;

list-style: none;

}

@keyframes slideIn{

0%{bottom: -270px;}

100%{bottom: 0;}

}

@-webkit-keyframes slideIn{

0%{bottom: -270px;}

100%{bottom: 0;}

}

@keyframes slideOut{

0%{bottom: 0;}

100%{bottom: -270px;}

}

@-webkit-keyframes slideOut{

0%{bottom: 0;}

100%{bottom: -270px;}

}

android md日期选择器,移动端日期选择相关推荐

  1. Angular中修改第三方组件的样式 - zorro日期选择器右端不对齐的BUG

    在一列上同时使用zorro的日期选择器和input组件会出现右端不对齐的BUG(nzSpan设置为一样) 上图中3个表单项:单据日期.开票.交货方式,nzSpan数值是一样的,可以看到日期选择器和下面 ...

  2. html表单日期选择器ppt,DatePicker 日期选择框

    ## DatePicker 日期选择器 ### 该文档不再维护,新版文档地址: [form-create 文档](http://fc.gd8.top) #### [在线预览](https://jsru ...

  3. element 日期选择器el-date-picker 月份/日期范围控制

    element 日期选择器el-date-picker 月份范围控制 <template> <el-date-pickertype="month"v-model= ...

  4. Layui日期选择器+两个日期之间天数计算

    Layui日期选择器+天数计算 下面这个图片就是我们Layui双控组件的日期范围选择器,可以选择起始时间和终止时间,那么针对于这个组件我们该怎么获取它的具体天数呢? 首先:我的需求是是要年-月-日的格 ...

  5. 多选月份的日期选择器_GitHub - ylmyg/SelectionTime: Android下日期选择器,支持范围选择、多选、单选、根据输入天数选择日期...

    SelectionTime(1.0.1) SelectionTime是用于Android设备上选择日期开源库,高度订制,打造适合自己的日期控件 效果图(多选.范围选.单选) 安装说明 Gradle: ...

  6. element-ui日期选择器datepicker限制最大选择日期范围

    如图,需求为最多选择范围为七天 <el-date-pickerv-model="pickerDate"type="daterange":picker-op ...

  7. iview日期选择器更改显示日期书_如何动态 设置 iview DatePicker 控件的 禁用日期(option)...

    在公司开发的过程中遇到的问题,我们采用了iview的Vue框架. 现有一个需求:用户在初始时页面后,DatePicker 的可选时间范围不作限制,用户可选择任意一天.当用户选择了某一天(planTim ...

  8. Android中DatePicker日期选择器的使用和获取选择的年月日

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

  9. antd 日期时间选择_【UI设计】日期选择器的常见样式总结

    来源:海盐社(haiyans7) 作者:青山 在使用各种 APP 的过程中,我们经常会遇到选择日期的场景,比如记账的时候.安排行程的时候.购买车票以及预订酒店的时候.有时我们需要选择一个日期,有时则需 ...

最新文章

  1. 如何修改world 2007文档结构图的字体 ???
  2. python hist 参数_关于python中plthist参数的使用详解
  3. 完善vim bccalc_linux插件
  4. curl -O 下载文件
  5. 你模型的变量符合业务逻辑了吗
  6. python numpy array转置_python-Numpy Performance-向量及其转置的外积
  7. 《变革中的思索》连载九:放飞的爱;母亲和我
  8. 【一步一步】Spring 源码环境搭建
  9. android 扩展textview,Android可收缩/扩展的TextView【1】
  10. Mac M1 + Vmware Fusion 安装 Windows 11 arm版及相关问题解决
  11. 论文被多人研究过了,我还可以怎么写?
  12. 安卓 基于百度LBS的定位
  13. 书摘---创业36条军规3:创业人七大须知
  14. java调用本地打印机,绘制打印模板,小票模板
  15. 管理的两大核心,工作目标、人的价值
  16. Android广告图片轮播控件
  17. python基础logging 压缩、根据指定文件夹并进行删除
  18. vectorvn1610报价_【德国VECTOR VN1610模块】价格_厂家 - 中国供应商
  19. HTML图片的路径问题
  20. JAVA 中IO总结 之前篇阻塞、非阻塞

热门文章

  1. R包cgdsr下载MSKCC癌症基因组数据
  2. 自然语言处理发展历程自我总结
  3. 项目快速开发的几点感悟
  4. linux 脚本编程
  5. Linux课2021
  6. Third-generation sequencing and the future of genomics 第三代测序和基因组学的未来
  7. yolo如何降低loss_从未看过如此通俗易懂的YOLO系列
  8. linux进程间通讯-共享内存
  9. Ubuntu18.04 + Nvida GTX 1660ti显卡 驱动安装
  10. tensoeflow 教程1、2