增加了插件 在初始化的时候,控制 年月日,和结束 年月日

$(time_createobj).siblings(".xtw_budget_userdatafn_hide").shijian({
showNowTime:false,
startYear:,
startMonh:'',
startDay:'',
val:,
endYear:,
endMonh:'',
endDay:'',
Year:true,//是否显示年//
Month:true,//是否显示月//
Day:true,//是否显示日//
Hour:false,
Hour2:false,
Minute:false,
h:"",
h2:"",
yyyy: nowyear, //设置起始值//
mm: nowmonth,
dd: nowday,
alwaysShow:true,
timeElm:$(".time-box"),//sjObj表示当前对象 也可以使用 sjObj 用字符串
//timeElm:"sjObj.prev()",// 也可以使用 sjObj 用字符串 sjObj 表示当前input
})

jjs 源码:

(function () {
function fillZero(x) {
if (x < 10) {
return x = "0" + x;
} else {
return "" + x;
}
};$.fn.shijian = function (opt) {
function cPlugin(o, emlnum) {
var sjObj = o;
console.log(sjObj)
sjObj.defaults = {
type: "time",
Format: "yyyy-mm-dd",
timeFormat: "h:m:s",
width: 60,
height: 32,
Year: true,
Month: true,
Day: true,
Hour: true,
Hour2: true,
Minute: true,
Seconds: false,
yyArr: [],
mmArr: [],
ddArr: [],
hArr: [],
mArr: [],
sArr: [],
yyyy: "2000",
mm: "01",
dd: "01",
h: "01",
m: "01",
s: "01",
val: null,
// yearText: "年",
// monthText: "月",
// dayText: '日',
// hourText: '时',
// minuteText: '分',
// secondsText: '秒',
okText: "确认",
cancelText: "取消",
thisElm: null,
showNowTime: true,
alwaysShow: false,
timeElm: null,
isparseInt: false,
finalshow: true,
boxClassName: "",
onfun: function (sjObj) {
},
okfun: function (sjObj) {
},
t_box: null,
df_persp: function () {
return $("<div class='df-persp'><div class='persp-bg'></div>")
},
df_box: function () {
return $("</div><div class='df-box " + (sjObj.opt.alwaysShow ? "alwaysShow" : "") + " " + sjObj.opt.boxClassName + "' style='line-height:" + sjObj.opt.height + "px;'></div>")
},
df_main: function () {
return $("<div class='df-main all-flex all-justify-justify all-align-items-center'>")
},
df_btn: function () {
if (sjObj.opt.alwaysShow) {
return
}
return $("<div class='df-btn' style='height:" + sjObj.opt.height + "px'><div class='df-ok'>" + sjObj.opt.okText + "</div><div class='df-no'>" + sjObj.opt.cancelText + "</div></div>")
},
df_wrap: function () {
return $("<div class='df-wrap'><table><tbody><tr></tr></tbody></table></div>")
},
df_final: function () {
return $("<div class='df-final'></div>")
},
getArr: function () {
for (var i = 0; i < 61; i++) {
if (i < 12) {
this.mmArr[i] = (i + 1);
}
if (i < 31) {
this.ddArr[i] = (i + 1);
}
// 这里定义小时范围
if (i < 25) {
this.hArr[i] = i;
}
;
if (i < 60) {
this.mArr[i] = i;
this.sArr[i] = i;
}
if (i < 61 && !sjObj.opt.Year && !sjObj.opt.Month && !sjObj.opt.Day && !sjObj.opt.Hour) {
this.mArr[i] = i;
}
}
},
y: 10,
nowTime: new Date(),
startYear: null,
endYear: null,
ampmText: null,
dataNum: 0,
strStart: function (text, c) {
var df = this;
var str;
var text = text || "";
// console.log(this);
if (df.width) {
str = '<div class="df-class">' + text + '</div><div class="df-item " style="height:' + (df.height * 5 - 1) + 'px;min-width:' + df.width + 'px"><ul class="df-ul" data-class=' + c + '>';
} else {
str = '<div class="df-class">' + text + '</div><div class="df-item " style="height:' + (df.height * 5 - 1) + 'px"><ul class="df-ul" data-class=' + c + '>';
}
sjObj.opt.dataNum++;
return str;
},
strEnd: function () {
var df = this;
return "</ul><div class='G-bg'><div class='G-top' style='height:" + (df.height * 2) + "px'></div><div class='G-mid' style='height:" + df.height + "px'></div><div class='G-btm' style='height:" + (df.height * 2) + "px'></div></div></div>"
},
fillZero: function (x) {
if (x < 10) {
return x = "0" + x;
} else {
return "" + x;
}
},
getYear: function () {
if (!this.startYear) {
var y = sjObj.opt.y || 10;
nowTime = new Date();
for (var x = this.y, i = 0; x != 0; y > 0 ? x-- : x++, i++) {
if (y < 0) {
sjObj.opt.yyArr[i] = nowTime.getFullYear() + x + 1;
} else {
sjObj.opt.yyArr[i] = nowTime.getFullYear() + i;
}
}
sjObj.opt.getArr()
} else {
if (sjObj.opt.yyArr.length > 1) {
console.log("年份", sjObj.opt.yyArr);
return;
}
var endYear = this.endYear || parseInt(sjObj.opt.y) + parseInt(this.startYear);
var y = -(endYear - parseInt(this.startYear));
nowTime = new Date(endYear + "/01/01");
console.log("自定义起始年份", endYear, y, nowTime);
for (var x = y, i = 0; y > 0 ? x != 0 : x < 1; y > 0 ? x-- : x++, i++) {
if (y < 0) {
sjObj.opt.yyArr[i] = nowTime.getFullYear() + x;
// console.log(x, sjObj.opt.yyArr[i]);
} else {
sjObj.opt.yyArr[i] = nowTime.getFullYear() + i;
}
}
sjObj.opt.getArr()
}
},
setCenter: function () {
var wid = $(window).width();
var tabWid = null;
var mWid = 0;
$(".df-wrap table").each(function () {
tabWid += parseFloat($(this).width());
})
if (tabWid > wid) {
$(".df-wrap table").each(function () {
mWid = parseFloat($(this).width()) > mWid ? parseFloat($(this).width()) : mWid;
})
$('.df-box').width(mWid);
} else {
$('.df-box').width(tabWid + 10)
}
},
buildArrStr: function (Arr, txt, c) {
var str = this.strStart(txt, c);
$.each(Arr, function () {
str += '<li class="df-li df-show" data-val=' + sjObj.opt.fillZero(this) + ' style="line-height:' + sjObj.opt.height + 'px;height:' + sjObj.opt.height + 'px">' + sjObj.opt.fillZero(this) + '</li>'
})
// console.log(Arr)
str += sjObj.opt.strEnd();
return str;
},
buildHTml: function () {
var wrap = sjObj.opt.df_wrap();
sjObj.opt.t_box = sjObj.opt.df_box();
var main = sjObj.opt.df_main();
var persp = sjObj.opt.df_persp();
// console.log(sjObj.opt.t_box);
if (sjObj.opt.alwaysShow) {
sjObj.opt.timeElm = eval(sjObj.opt.timeElm);
// console.log(sjObj.opt.timeElm)
sjObj.opt.timeElm.append(sjObj.opt.t_box.append(main.append(wrap)));
} else {
sjObj.opt.timeElm = $("<div class='df-persp'><div class='persp-bg'></div>");
sjObj.opt.timeElm.append(sjObj.opt.t_box.append(sjObj.opt.finalshow ? sjObj.opt.df_final : "").append(main.append(wrap)).append(sjObj.opt.df_btn));
$('body').append(sjObj.opt.timeElm)
}
if (sjObj.opt.ampmText) {
main.append("<div class='df-wrap'><table><tbody><tr><td>" + sjObj.opt.buildAmPmStr() + "</tr></tbody></table></div>")
}
if (sjObj.opt.Format == "dd-mm-yyyy") {
if (sjObj.opt.Day) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.ddArr, sjObj.opt.dayText, "dd") + "</td>");
if (sjObj.opt.Month) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.mmArr, sjObj.opt.monthText, "mm") + "</td>");
if (sjObj.opt.Year) $(sjObj.opt.timeElm.find('df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.yyArr, sjObj.opt.yearText, "yyyy") + "</td>");
} else if (sjObj.opt.Format == "mm-dd-yyyy") {
if (sjObj.opt.Month) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.mmArr, sjObj.opt.monthText, "mm") + "</td>");
if (sjObj.opt.Day) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.ddArr, sjObj.opt.dayText, "dd") + "</td>");
if (sjObj.opt.Year) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.yyArr, sjObj.opt.yearText, "yyyy") + "</td>");
} else {
if (sjObj.opt.Year) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.yyArr, sjObj.opt.yearText, "yyyy") + "</td>");
if (sjObj.opt.Month) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.mmArr, sjObj.opt.monthText, "mm") + "</td>");
if (sjObj.opt.Day) $(sjObj.opt.timeElm.find('.df-wrap')[0]).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.ddArr, sjObj.opt.dayText, "dd") + "</td>");
}
if (sjObj.opt.Hour) {
var eml = sjObj.opt.df_wrap();
$(eml).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.hArr, sjObj.opt.hourText, "h") + "</td>")
main.append(eml);
}
if (sjObj.opt.Hour2) {
var eml = sjObj.opt.df_wrap();
$(eml).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.hArr, sjObj.opt.hour2Text, "h2") + "</td>")
main.append(eml);
}
;
if (sjObj.opt.Minute) {
var eml = sjObj.opt.df_wrap();
$(eml).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.mArr, sjObj.opt.minuteText, "m") + "</td>");
main.append(eml);
}
;
if (sjObj.opt.Seconds) {
var eml = sjObj.opt.df_wrap();
$(eml).find('tr').append("<td>" + sjObj.opt.buildArrStr(sjObj.opt.sArr, sjObj.opt.secondsText, "m") + "</td>");
main.append(eml);
}
if (sjObj.opt.showNowTime) {
if (emlnum) {
var val = sjObj.value, sjeml = sjObj;
} else {
var val = sjObj[0].value, sjeml = sjObj[0];
}
if (val) {
// console.log("input中有值", val);
// console.log(val.indexOf(" "));
if (val.indexOf("/") != -1) {
val = val.replace(/\//g, "-")
}
if (val.indexOf(" ") != -1) {
var valarr = val.split(" ");
} else {
var valarr = [val];
}
// console.log("拆分后", valarr);
var nyr, sfm;
var str = "";
if (valarr.length == 2) {
nyr = valarr[0];
sfm = valarr[1];
str += getnyrstr(nyr) + " " + getsfmstr(sfm);
} else if (valarr.length == 1 && (valarr.indexOf("-") != -1 || valarr.indexOf("/") != -1)) {
str += getnyrstr(valarr[0]) + " " + getsfmstr("")
// console.log("组合 2");
} else {
if (sjObj.opt.Year || sjObj.opt.Month || sjObj.opt.Day) {
str += getnyrstr(valarr[0]) + " " + getsfmstr("")
} else {
str += getnyrstr("") + " " + getsfmstr(valarr[0])
}
console.log("组合 3");
}
console.log("合成字符串", str)
data = new Date(str.replace(/-/g, "/"));
} else {
var data = new Date();
}
console.log(data);
var year = data.getFullYear();
var month = data.getMonth() + 1;
var day = data.getDate();
var hours = data.getHours();
var Minutes = data.getMinutes();
var Seconds = data.getSeconds();
sjObj.opt.yyyy = fillZero(year);
sjObj.opt.mm = fillZero(month);
sjObj.opt.dd = fillZero(day);
sjObj.opt.h = fillZero(hours);
sjObj.opt.m = fillZero(Minutes);
sjObj.opt.s = fillZero(Seconds);
console.log(year, month, day, hours, Minutes);
console.log("是否显示年", sjObj.opt.Year)
if (sjObj.opt.Year) sjObj.opt.timeElm.find("[data-class='yyyy'] .df-li").each(function () {
console.log(parseInt($(this).attr("data-val")), parseInt(year))
if (parseInt($(this).attr("data-val")) == parseInt(year)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
console.log(pY, year)
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Month) sjObj.opt.timeElm.find("[data-class='mm'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(month)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
console.log(pY, month)
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Day) sjObj.opt.timeElm.find("[data-class='dd'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(day)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
console.log(day)
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Hour) sjObj.opt.timeElm.find("[data-class='h'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(hours)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Minute) sjObj.opt.timeElm.find("[data-class='m'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(Minutes)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
console.log(pY, Minutes, $(this).index(), this)
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Seconds) sjObj.opt.timeElm.find("[data-class='m'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(Seconds)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
} else {
// console.log("使用自定义时间")
if (sjObj.opt.Year) sjObj.opt.timeElm.find("[data-class='yyyy'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(sjObj.opt.yyyy)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Month) sjObj.opt.timeElm.find("[data-class='mm'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(sjObj.opt.mm)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Day) sjObj.opt.timeElm.find("[data-class='dd'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(sjObj.opt.dd)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Hour) sjObj.opt.timeElm.find("[data-class='h'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(sjObj.opt.h)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
// console.log(pY, sjObj.opt.h, $(this).index())
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Minute) sjObj.opt.timeElm.find("[data-class='m'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(sjObj.opt.m)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
console.log(pY, sjObj.opt.m, $(this).index())
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
if (sjObj.opt.Seconds) sjObj.opt.timeElm.find("[data-class='m'] .df-li").each(function () {
if (parseInt($(this).attr("data-val")) == parseInt(sjObj.opt.s)) {
var pY = -($(this).index() - 2) * sjObj.opt.height;
$(this).parent().css({"transform": "translate(0," + pY + "px)"})
}
})
// console.log("设置默认时间")
}
sjObj.opt.fillData();
sjObj.opt.setCenter();
sjObj.opt.bindFun();
},
bindFun: function () {
sjObj.opt.timeElm.find(".df-no").on("click", function () {
$(this).parent().parent().parent().remove();
sjObj.opt.onfun(sjObj);
$("html").removeClass("ov_hi");
})
sjObj.opt.timeElm.find(".df-ok").on("click", function () {
var str = "";
if (sjObj.opt.Year) {
str = sjObj.opt.Format.replace("yyyy", sjObj.opt.yyyy)
}
if (sjObj.opt.Month) {
str = str.replace("mm", sjObj.opt.mm);
}
if (sjObj.opt.Day) {
str = str.replace("dd", sjObj.opt.dd)
}
if (sjObj.opt.Day && sjObj.opt.Hour) {
str += " ";
}
if (sjObj.opt.Hour) {
str += sjObj.opt.h
}
if (sjObj.opt.Minute && sjObj.opt.Hour) {
str += ":"
}
if (sjObj.opt.Minute) {
str += sjObj.opt.m;
}
if (sjObj.opt.Minute && sjObj.opt.Seconds) {
str += ":"
}
if (sjObj.opt.Seconds) {
str += sjObj.opt.s;
}
sjObj.opt.val = sjObj.opt.isparseInt ? parseInt(str) : str;
console.log("我执行了没")
$(sjObj.opt.thisElm).val(sjObj.opt.val);
$(this).parent().parent().parent().remove();
sjObj.opt.okfun(sjObj);
$("html").removeClass("ov_hi");
})
sjObj.opt.moveElm(sjObj.opt.timeElm.find(".G-bg"))
},
fillData: function () {
var str = "";
if (sjObj.opt.Year) {
str += sjObj.opt.yyyy + '-';
}
if (sjObj.opt.Month) {
str += sjObj.opt.mm + '-'
}
if (sjObj.opt.Day) {
str += sjObj.opt.dd + " "
}
if (sjObj.opt.Hour) {
str += sjObj.opt.h + ":00 - ";
}
if (sjObj.opt.Hour) {
str += sjObj.opt.h2 + ":00";
}
if (sjObj.opt.Minute) {
str += sjObj.opt.m;
}
if (sjObj.opt.Seconds) {
str += sjObj.opt.s;
}
if (!sjObj.opt.alwaysShow) {
console.log("直接显示?", sjObj.opt.timeElm.find(".df-final"));
if (sjObj.opt.isparseInt) {
sjObj.opt.timeElm.find(".df-final").html(parseInt(str));
} else {
sjObj.opt.timeElm.find(".df-final").html(str);
}
} else {
// console.log("啊哈哈哈哈啊?", sjObj.opt.timeElm.find(".df-final"))
$(sjObj.opt.thisElm).html(str).val(str);
}
},
vardata: function (name, val) {
if (!val) {
return;
}
if (sjObj.opt[name] != val) {
sjObj.opt[name] = val;
sjObj.opt.fillData();
}
},
getFinal: function () {
var currentY = 0;
var str = "";
if (sjObj.opt.showNowTime) {
sjObj.opt.timeElm.find(".df-ul").each(function () {
currentY = getTranslateY(this);
var dataClass = $(this).attr("data-class");
var val = $($(this).find(".df-li")[Math.round(currentY / sjObj.opt.height) + 2]).attr("data-val");
sjObj.opt.vardata(dataClass, val);
console.log(dataClass, val)
$(this).unbind("webkitTransitionEnd").on("webkitTransitionEnd", function () {
currentY = getTranslateY(this);
var val = $($(this).find(".df-li")[Math.round(currentY / sjObj.opt.height) + 2]).attr("data-val");
dataClass = $(this).attr("data-class");
sjObj.opt.vardata(dataClass, val);
sjObj.opt.daysJudge(dataClass);
})
})
} else {
sjObj.opt.timeElm.find(".df-ul").each(function () {
currentY = getTranslateY(this);
var dataClass = $(this).attr("data-class");
var val = $($(this).find(".df-li")[Math.round(currentY / sjObj.opt.height) + 2]).attr("data-val");
sjObj.opt.vardata(dataClass, val);
// console.log(dataClass, val)
$(this).unbind("webkitTransitionEnd").on("webkitTransitionEnd", function () {
currentY = getTranslateY(this);
var val = $($(this).find(".df-li")[Math.round(currentY / sjObj.opt.height) + 2]).attr("data-val");
dataClass = $(this).attr("data-class");
sjObj.opt.vardata(dataClass, val);
sjObj.opt.daysJudge(dataClass);
})
})
}
},
daysJudge: function (name) {
if (name == 'mm' || name == "yyyy") {
var day = new Date(sjObj.opt.yyyy, sjObj.opt.mm, 0).getDate();
var l = sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-show").length var mubiao = day - l;
// 增加
if (mubiao > 0) {
for (var i = 0; i < mubiao; i++) {
$(sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-li")[l + i]).removeClass("df-hide").addClass("df-show")
}
} else {
// 减少
var naomovey = getTranslateY(sjObj.opt.timeElm.find('[data-class="dd"]'))
for (var i = 0; i > mubiao; i--) {
$(sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-li")[l - 1 + i]).removeClass("df-show").addClass("df-hide")
}
if (naomovey > (day - 1 - 2) * sjObj.opt.height) {
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transform": "translate(0," + -(day - 1 - 2) * sjObj.opt.height + "px)"})
}
}
// 自定义的 起始月事件
sjObj.opt.setstartMont(name);
// 自定义的 结束月事件
sjObj.opt.setendMont(name);
};
// 自定义的起始天
sjObj.opt.setstartDay(name);
// 自定义的结束天
sjObj.opt.setendDay(name);
},
// 自定义的 起始月事件
setstartMont:function(name){
if(name=='yyyy'){
if(sjObj.opt.yyyy==sjObj.opt.startYear){
var naomovey_mm = getTranslateY(sjObj.opt.timeElm.find('[data-class="mm"]')) for (var i = 0; i < 11; i++) {
$(sjObj.opt.timeElm.find('[data-class="mm"]').find(".df-li")[i]).removeClass("df-hide").addClass("df-show")
}
for (var i = 0; i < sjObj.opt.startMonh-1; i++) {
$(sjObj.opt.timeElm.find('[data-class="mm"]').find(".df-li")[i]).removeClass("df-show").addClass("df-hide");
} if ( naomovey_mm<= (sjObj.opt.startMonh-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transform": "translate(0," + -(sjObj.opt.startMonh-3)* sjObj.opt.height + "px)"})
}
}else{
if(sjObj.opt.yyyy!=sjObj.opt.endYear) {
for (var i = 0; i < 11; i++) {
$(sjObj.opt.timeElm.find('[data-class="mm"]').find(".df-li")[i]).removeClass("df-hide").addClass("df-show")
}
}
}
}
if(name=='mm'){
if(sjObj.opt.yyyy==sjObj.opt.startYear){
var naomovey_mm = getTranslateY(sjObj.opt.timeElm.find('[data-class="mm"]'))
// console.log(naomovey_mm+'xxxxxxxxxxxxxx')
if ( naomovey_mm<= (sjObj.opt.startMonh-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transform": "translate(0," + -(sjObj.opt.startMonh-3)* sjObj.opt.height + "px)"})
}
}
}
},
// 自定义的起始天
setstartDay:function(name){
if(name=='mm'||name=='yyyy'){
if(sjObj.opt.yyyy==sjObj.opt.startYear&&sjObj.opt.mm==sjObj.opt.startMonh){
var naomovey_dd = getTranslateY(sjObj.opt.timeElm.find('[data-class="dd"]')) for (var i = 0; i < sjObj.opt.startDay-1; i++) {
$(sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-li")[i]).removeClass("df-show").addClass("df-hide");
} if ( naomovey_dd<= (sjObj.opt.startDay-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transform": "translate(0," + -(sjObj.opt.startDay-3)* sjObj.opt.height + "px)"})
}
}else {
if(sjObj.opt.yyyy!=sjObj.opt.endYear&&sjObj.opt.mm!=sjObj.opt.endMonh){
var cdays = new Date(sjObj.opt.yyyy, sjObj.opt.mm, 0).getDate();
for (var i = 0; i < cdays; i++) {
$(sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-li")[i]).removeClass("df-hide").addClass("df-show")
}
}
}
}
if(name=='dd'){
if(sjObj.opt.yyyy==sjObj.opt.startYear&&sjObj.opt.mm==sjObj.opt.startMonh){
var naomovey_dd = getTranslateY(sjObj.opt.timeElm.find('[data-class="dd"]'))
// console.log(naomovey_dd+'xxxxxxxxxxxxxx')
if ( naomovey_dd<= (sjObj.opt.startDay-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transform": "translate(0," + -(sjObj.opt.startDay-3)* sjObj.opt.height + "px)"})
}
}
} },
// 自定义的 结束月事件
setendMont:function(name){
if(name=='yyyy'){
if(sjObj.opt.yyyy==sjObj.opt.endYear){
var naomovey_mmend = getTranslateY(sjObj.opt.timeElm.find('[data-class="mm"]')) for (var i = 0; i < 11; i++) {
$(sjObj.opt.timeElm.find('[data-class="mm"]').find(".df-li")[i]).removeClass("df-hide").addClass("df-show")
}
for (var i = parseFloat(sjObj.opt.endMonh); i < 11; i++) {
$(sjObj.opt.timeElm.find('[data-class="mm"]').find(".df-li")[i]).removeClass("df-show").addClass("df-hide");
}
if ( naomovey_mmend> (sjObj.opt.endMonh-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transform": "translate(0," + -(sjObj.opt.endMonh-3)* sjObj.opt.height + "px)"})
}
}else{
if(sjObj.opt.yyyy!=sjObj.opt.startYear){
for (var i = 0; i < 11; i++) {
$(sjObj.opt.timeElm.find('[data-class="mm"]').find(".df-li")[i]).removeClass("df-hide").addClass("df-show")
}
}
}
}
if(name=='mm'){
if(sjObj.opt.yyyy==sjObj.opt.endYear){
var naomovey_mmend = getTranslateY(sjObj.opt.timeElm.find('[data-class="mm"]'))
console.log(naomovey_mmend+'xxxxxxxxxxxxxx')
if ( naomovey_mmend> (sjObj.opt.endMonh-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="mm"]').css({"transform": "translate(0," + -(sjObj.opt.endMonh-3)* sjObj.opt.height + "px)"})
}
}
}
},
// 自定义的结束天
setendDay:function(name){
if(name=='mm'||name=='yyyy'){
// console.log(sjObj.opt.mm)
if(sjObj.opt.yyyy==sjObj.opt.endYear&&sjObj.opt.mm==parseFloat(sjObj.opt.endMonh)){
var naomovey_dd_day = getTranslateY(sjObj.opt.timeElm.find('[data-class="dd"]'))
for (var i = 0; i < 31; i++) {
$(sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-li")[i]).removeClass("df-hide").addClass("df-show");
}
for (var i = parseFloat(sjObj.opt.endDay); i < 31; i++) {
$(sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-li")[i]).removeClass("df-show").addClass("df-hide");
} if ( naomovey_dd_day>= (sjObj.opt.endDay-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transform": "translate(0," + -(sjObj.opt.endDay-3)* sjObj.opt.height + "px)"})
}
}else {
if(sjObj.opt.yyyy!=sjObj.opt.startYear&&sjObj.opt.mm!=sjObj.opt.startMonh) {
var cdays = new Date(sjObj.opt.yyyy, sjObj.opt.mm, 0).getDate();
for (var i = 0; i < cdays; i++) {
$(sjObj.opt.timeElm.find('[data-class="dd"]').find(".df-li")[i]).removeClass("df-hide").addClass("df-show")
}
}
}
}
if(name=='dd'){
if(sjObj.opt.yyyy==sjObj.opt.endYear&&sjObj.opt.mm==sjObj.opt.endMonh){
var naomovey_dd_day = getTranslateY(sjObj.opt.timeElm.find('[data-class="dd"]'))
// console.log(naomovey_dd_day+'xxxxxxxxxxxxxx')
if ( naomovey_dd_day>= (sjObj.opt.endDay-3)* sjObj.opt.height ) {
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transition": "all .5s"})
sjObj.opt.timeElm.find('[data-class="dd"]').css({"transform": "translate(0," + -(sjObj.opt.endDay-3)* sjObj.opt.height + "px)"})
}
}
} },
moveElm: function (eml) {
var classNameyyy=$(eml[0].offsetParent).find('ul').attr('data-class');
var classNamemm=$(eml[1].offsetParent).find('ul').attr('data-class');
var classNamedd=$(eml[2].offsetParent).find('ul').attr('data-class');
return $(eml).each(function () {
var sX = null, sY = null, mX = null, mY = null, eX = null, eY = null, sTime = null,
eTime = null, mTime = null, nTime = null, nY = 0, drt = null, nowElm = null,
canStart = true, canMove = false, canEnd = false, emlLang = null, maxY = null, minY = null,
lastY = null, nowY = null, moveY = null, stopInertiaMove = false, SE = null, ME = null,
EE = null, moveCy = 0;
var stop = function (e) {
if (e.preventDefault)
e.preventDefault();
e.returnValue = false;
}
var moveStart = function (e) {
// console.log(e);
stop(e);
if (!canStart) {
return
}
if (e.originalEvent.touches) {
SE = e.originalEvent.targetTouches[0]
} else {
SE = e;
}
sX = SE.pageX;
sY = SE.pageY;
nowElm = $(this).prev(".df-ul");
emlLang = nowElm.find(".df-show").length;
lastY = sY;
nY = getTranslateY(nowElm);
// console.log("移动开始时", e,nY);
sTime = new Date().getTime();
if (!canMove && canEnd) {
return false
}
canStart = false
canMove = false;
stopInertiaMove = true;
$(window).on("touchmove", function (e) {
if (stopInertiaMove) {
e.preventDefault();
}
})
};
var moveing = function (e) {
stop(e);
if (e.originalEvent.touches) {
ME = e.originalEvent.targetTouches[0]
} else {
ME = e;
}
mTime = new Date().getTime();
mX = ME.pageX;
mY = ME.pageY;
drt = GetSlideDirection(sX, sY, mX, mY);
if ((drt == 1 || drt == 2) && !canStart) {
canMove = true;
canEnd = true;
stopInertiaMove = true;
}
if (canMove) {
nowElm.css({"transition": "none"})
nowElm.css({"transform": "translate(0," + -(nY - (mY - sY)) + "px)"})
sjObj.opt.getFinal();
}
if (mTime - sTime > 300) {
// console.log("移动后加速")
sTime = mTime;
lastY = mY;
}
};
var moveEnd = function (e) {
stop(e);
// 我们根据 event事件 找到滑动的 是 年还是月 还是日
// console.log($(e.currentTarget).siblings('.df-ul').attr('data-class'))
var etarget=$(e.currentTarget).siblings('.df-ul').attr('data-class');
if (e.originalEvent.touches) {
EE = e.originalEvent.changedTouches[0]
} else {
EE = e;
}
eX = EE.pageX;
eY = EE.pageY;
maxY = sjObj.opt.height * 2;
// minY = -(emlLang - 3) * sjObj.opt.height;
// 1dian 这里是控制最大下拉距离的
if(sjObj.opt.yyyy==sjObj.opt.startYear&&etarget=='mm'){
minY = -(12 - 3) * sjObj.opt.height;
} else if(sjObj.opt.yyyy==sjObj.opt.startYear&&sjObj.opt.mm==sjObj.opt.startMonh&&etarget=='dd'){
var cday = new Date(sjObj.opt.yyyy, sjObj.opt.startMonh, 0).getDate();
minY = -(cday - 3) * sjObj.opt.height;
}
else if(sjObj.opt.yyyy==sjObj.opt.endYear&&etarget=='mm'){
minY = -(sjObj.opt.endMonh-3)* sjObj.opt.height;
}
else if(sjObj.opt.yyyy==sjObj.opt.endYear&&sjObj.opt.mm==sjObj.opt.endMonh&&etarget=='dd'){
var cday = new Date(sjObj.opt.yyyy, sjObj.opt.endMonh, 0).getDate();
minY = -(cday - 3) * sjObj.opt.height;
}else{
minY = -(emlLang - 3) * sjObj.opt.height;
}
if (canEnd) { canMove = false;
canEnd = false;
canStart = true;
nY = -(nY - (mY - sY));
nowY = eY; if (nY > maxY) {
nowElm.css({"transition": "all .5s"})
nowElm.css({"transform": "translate(0," + maxY + "px)"})
} else if (nY < minY) {
nowElm.css({"transition": "all .5s"})
nowElm.css({"transform": "translate(0," + minY + "px)"})
return ;
} else {
eTime = new Date().getTime();
var speed = ((nowY - lastY) / (eTime - sTime));
stopInertiaMove = false;
(function (v, startTime, contentY) {
// contentY 滑动的距离
// dir -1往上滑
// dir 1往下滑
var dir = v > 0 ? -1 : 1;
var deceleration = dir * 0.001; function inertiaMove() {
if (stopInertiaMove)
return;
var nowTime = new Date().getTime();
// t 是时间差
var t = nowTime - startTime;
// nowY 是现在的速度
var nowV = v + t * deceleration;
// 移动的距离 sudu
var moveY = (v + nowV) / 2 * t;
if (dir * nowV > 0) {
// console.log(moveCy,minY,sjObj.opt.minY)
if (moveCy > sjObj.opt.maxY) {
console.log('moveCy大于'+moveCy)
nowElm.css({"transition": "all .5s"})
sjObj.opt.nowElm.css({"transform": "translate(0," + sjObj.opt.maxY + "px)"})
} else if (moveCy < sjObj.opt.minY) {
console.log('moveCy小于'+moveCy)
nowElm.css({"transition": "all .5s"})
nowElm.css({"transform": "translate(0," + sjObj.opt.minY + "px)"})
} else {
var MC = Math.round(moveCy / sjObj.opt.height)
// console.log('MC:'+MC)
// 2dian 这里是第二个关键点
if(sjObj.opt.yyyy==sjObj.opt.startYear&&etarget=='mm'){
if (MC > 2) {
MC = 2
} else if (MC < -(12 - 1) + 2) {
MC = -(12 - 1) + 2
}
// console.log('mm+,'+MC)
}else if(sjObj.opt.yyyy==sjObj.opt.endYear&&etarget=='mm'){ if (MC > 2) {
MC = 2
} else if (MC < -sjObj.opt.endMonh) {
MC = -(sjObj.opt.endMonh-3)
}
console.log('endmonth:'+MC)
}
else if(sjObj.opt.yyyy==sjObj.opt.startYear&&sjObj.opt.mm==sjObj.opt.startMonh&&etarget=='dd'){
var cday = new Date(sjObj.opt.yyyy, sjObj.opt.startMonh, 0).getDate();
if (MC > 2) {
MC = 2
} else if (MC < -(cday-1 ) + 2) {
MC = -(cday-1) + 2
}
// console.log('dd:'+MC,cday)
}
else if(sjObj.opt.yyyy==sjObj.opt.endYear&&sjObj.opt.mm==sjObj.opt.endtMonh&&etarget=='dd'){
var cday = new Date(sjObj.opt.yyyy, sjObj.opt.endMonh, 0).getDate();
if (MC > 2) {
MC = 2
} else if (MC < -(cday-1 ) + 2) {
MC = -(cday-1) + 2
}
console.log('eeenddd:'+MC,cday)
}
else{
if (MC > 2) {
MC = 2
} else if (MC < -(emlLang - 1) + 2) {
MC = -(emlLang - 1) + 2
}
// console.log('else:'+MC,cday)
}
console.log('reslut:'+MC)
nowElm.css({"transition": "all .4s"});
nowElm.css({"transform": "translate(0," + sjObj.opt.height * MC + "px)"})
}
sjObj.opt.getFinal();
return
}
moveCy = (contentY + moveY)
// console.log('moveCy'+moveCy)
if (moveCy > (maxY + (sjObj.opt.height * 2))) {
nowElm.css({"transition": "all .5s"})
nowElm.css({"transform": "translate(0," + maxY + "px)"})
return
} else if (moveCy < (minY - (sjObj.opt.height * 2))) {
nowElm.css({"transition": "all .5s"})
nowElm.css({"transform": "translate(0," + minY + "px)"})
return
}
nowElm.css({"transform": "translate(0," + moveCy + "px)"})
sjObj.opt.getFinal();
var timers = setTimeout(inertiaMove, 10);
} inertiaMove(); })(speed, eTime, nY);
}
// console.log("移动结束", EE)
}
}
// console.log("开始绑定事件", $(this))
$(this).unbind("touchstart mousedown").on("touchstart mousedown", moveStart)
$(this).unbind("touchmove").on("touchmove", moveing)
$(this).unbind("touchend").on("touchend", moveEnd)
$(document).on("mousemove", moveing)
$(document).on("mouseup", moveEnd)
})
},
};
sjObj.opt = $.extend({}, sjObj.defaults, opt);
var GetSlideAngle = function (dx, dy) {
return Math.atan2(dy, dx) * 180 / Math.PI;
}; function getnyrstr(str) {
var r = sjObj.opt.Format;
var valarr = str.split("-");
console.log(valarr, str);
if (valarr.length == 3) {
r = r.replace("yyyy", valarr[0]);
r = r.replace("mm", valarr[1]);
r = r.replace("dd", valarr[2]);
} else if (valarr.length == 2) {
if (sjObj.opt.Year && !sjObj.opt.Month) {
r = r.replace("yyyy", valarr[0]);
r = r.replace("mm", sjObj.opt.mm);
r = r.replace("dd", valarr[1]);
} else if (sjObj.opt.Year && !sjObj.opt.Day) {
r = r.replace("yyyy", valarr[0]);
r = r.replace("mm", valarr[1]);
r = r.replace("dd", sjObj.opt.dd);
} else if (!sjObj.opt.Year) {
r = r.replace("yyyy", sjObj.opt.yyyy);
r = r.replace("mm", valarr[0]);
r = r.replace("dd", valarr[1]);
}
} else if (valarr.length == 1) {
if (sjObj.opt.Year) {
r = r.replace("yyyy", valarr[0]);
r = r.replace("mm", sjObj.opt.mm);
r = r.replace("dd", sjObj.opt.dd);
} else if (sjObj.opt.Month) {
r = r.replace("yyyy", sjObj.opt.yyyy);
r = r.replace("mm", valarr[0]);
r = r.replace("dd", sjObj.opt.dd);
} else if (sjObj.opt.Day) {
r = r.replace("yyyy", sjObj.opt.yyyy);
r = r.replace("mm", sjObj.opt.mm);
r = r.replace("dd", valarr[0]);
} else {
r = r.replace("yyyy", sjObj.opt.yyyy);
r = r.replace("mm", sjObj.opt.mm);
r = r.replace("dd", sjObj.opt.dd);
}
}
;console.log("返回年月日", r);
return r;
} function getsfmstr(str) {
var r = sjObj.opt.timeFormat;
console.log(r);
var valarr = str.split(":");
if (valarr.length == 3) {
r = r.replace("h", valarr[0]);
r = r.replace("m", valarr[1]);
r = r.replace("s", valarr[2]);
} else if (valarr.length == 2) {
if (sjObj.opt.Hour && !sjObj.opt.Minute) {
r = r.replace("h", valarr[0]);
r = r.replace("m", sjObj.opt.m);
r = r.replace("s", valarr[1]);
} else if (sjObj.opt.Hour && !sjObj.opt.Seconds) {
r = r.replace("h", valarr[0]);
r = r.replace("m", valarr[1]);
r = r.replace("s", sjObj.opt.s);
} else if (!sjObj.opt.Hour) {
r = r.replace("h", sjObj.opt.h);
r = r.replace("m", valarr[0]);
r = r.replace("s", valarr[1]);
}
} else if (valarr.length == 1) {
if (sjObj.opt.Hour) {
r = r.replace("h", valarr[0]);
r = r.replace("m", sjObj.opt.m);
r = r.replace("s", sjObj.opt.s);
} else if (sjObj.opt.Minute) {
r = r.replace("h", sjObj.opt.h);
r = r.replace("m", valarr[0]);
r = r.replace("s", sjObj.opt.s);
} else if (sjObj.opt.Hour) {
r = r.replace("h", sjObj.opt.h);
r = r.replace("m", sjObj.opt.m);
r = r.replace("s", valarr[0]);
} else {
r = r.replace("h", sjObj.opt.h);
r = r.replace("m", sjObj.opt.m);
r = r.replace("s", sjObj.opt.s);
}
}
;console.log("返回时分秒", r);
return r;
} var GetSlideDirection = function (startX, startY, endX, endY) {
var dy = startY - endY;
var dx = endX - startX;
var result = 0;
if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
return result;
}
var angle = GetSlideAngle(dx, dy);
if (angle >= -45 && angle < 45) {
result = 4;
} else if (angle >= 45 && angle < 135) {
result = 1;
} else if (angle >= -135 && angle < -45) {
result = 2;
}
else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
result = 3;
}
return result;
};
var getTranslateY = function (eml) {
var matrix = $(eml).css("transform");
// console.log("获取到的transform", matrix)
var T;
if (matrix == "none") {
T = 0;
} else {
var arr = matrix.split(",")
T = -(arr[5].split(")")[0]);
}
// console.log("返回的transform", T)
return T
}
sjObj.innt = function () {
if (!sjObj.opt.alwaysShow) {
$(this).on("click", function (e) {
e.stopPropagation();
sjObj.opt.thisElm = this;
switch (sjObj.opt.type) {
case "time":
$("html").addClass("ov_hi");
$(this).blur();
sjObj.opt.getYear();
sjObj.opt.buildHTml();
sjObj.opt.getFinal();
break;
}
})
} else {
sjObj.opt.thisElm = this;
// console.log("直接显示")
sjObj.opt.getYear();
sjObj.opt.buildHTml();
}
$(window).on("resize", function () {
// console.log("窗口大小改变")
sjObj.opt.setCenter()
})
}
sjObj.innt();
return sjObj
} if (this.length > 1) {
console.log("多个")
var arr = []
$.each(this, function () {
arr.push(cPlugin(this, true))
})
return arr
} else {
// console.log("一个")
obj = cPlugin(this);
// console.log("一个时间对象", obj);
return obj
}
}
})(jQuery)

  

最新文章

  1. apache commons math 示例代码
  2. Linux提权基础
  3. Python导入cx_Oracle报错
  4. 怎么修改windows命令行字体大小
  5. IOS把文件保存进沙盒目录
  6. Zabbix探索:工作时间的设置
  7. VC++判断是否连网
  8. jquery的节点查询
  9. Sublime Text 2 介紹
  10. HDU ACM 1054 Strategic Game 二分图最小顶点覆盖?树形DP
  11. POJ1458 Common Subsequence 【最长公共子序列】
  12. Linode开通新加坡机房:vps速度快,价格不变!
  13. mysql Explain 性能分析关键字
  14. 跨域WebApi的Jquery EasyUI的数据交互
  15. 浅谈Android布局
  16. gulp 自动ftp至服务器时,处理开发 测试服务器地址问题
  17. LoadRunner脚本参数化之设置条件与运行结果说明
  18. 使用python抓取58手机维修信息
  19. Git详解之一 Git实战
  20. pandas数据操作

热门文章

  1. SpringMVC流程图示
  2. Java自学-Lambda 概念
  3. HTML的表单标签汇总
  4. Win10激活工具 —— HWIDGen的使用方法
  5. 题解【洛谷P1618】 三连击(升级版)
  6. Js 事件委托 解决动态元素不能click点击的问题
  7. 解决windows10 OBS Studioobsstudio显示器捕获黑屏
  8. 结合Thread Ninja明确与处理异步协程中的异常
  9. scw——03错误,swagger开启错误
  10. BZOJ1034[ZJOI2008]泡泡堂