javascript - 离开/返回浏览器窗口时选择器打开
问题描述
问题:在 Google Chrome 上切换标签时,它会重新打开弹出框。仅在上次选择弹出框或输入处于活动状态时发生。这也发生在 pickadate.js 网站上。
重建步骤:
单击输入字段以提示弹出框 选择日期并关闭弹出框 更改选项卡并返回 弹出框重新打开而不提示。执行上述操作但在过程中选择另一个输入字段时,更改选项卡后不会重新弹出。问题仅在于在切换选项卡之前该字段处于活动状态或聚焦。关闭弹出框应该使输入字段失去焦点以解决问题。
/*!
* pickadate.js v3.4.0, 2014/02/15
* By Amsul, http://amsul.ca
* Hosted on http://amsul.github.io/pickadate.js
* Licensed under MIT
*/
var b = ["string" == typeof m.hiddenPrefix ? m.hiddenPrefix : "", "string" == typeof m.hiddenSuffix ? m.hiddenSuffix : "_submit"];
r._hidden = angular.element('<input type=hidden name="' + b[0] + a.name + b[1] + '"id="' + b[0] + a.id + b[1] + '"' + (p.attr("data-value") || a.value ? ' value="' + r.get("select", m.formatSubmit) + '"' : "") + ">")[0], p.on("change." + o.id, function() {
r._hidden.value = a.value ? r.get("select", m.formatSubmit) : ""
}).after(r._hidden)
}
function l(a) {
a.stopPropagation(), "focus" == a.type && (r.$root.addClass(n.focused), c(r.$root[0], "selected", !0)), r.open()
}
if (!a) return b;
var m;
e ? (m = e.defaults, angular.extend(m, g)) : m = g || {};
var n = b.klasses();
angular.extend(n, m.klass);
var o = {
id: a.id || "P" + Math.abs(~~(Math.random() * new Date))
},
p = angular.element(a),
q = function() {
return this.start()
},
r = q.prototype = {
constructor: q,
$node: p,
start: function() {
return o && o.start ? r : (o.methods = {}, o.start = !0, o.open = !1, o.type = a.type, a.autofocus = a == document.activeElement, a.type = "text", a.readOnly = !m.editable, a.id = a.id || o.id, r.component = new e(r, m), r.$root = angular.element(b._.node("div", h(), n.picker, 'id="' + a.id + '_root"')), j(), m.formatSubmit && k(), i(), m.container ? angular.element(m.container).append(r.$root) : p.after(r.$root), r.on({
start: r.component.onStart,
render: r.component.onRender,
stop: r.component.onStop,
open: r.component.onOpen,
close: r.component.onClose,
set: r.component.onSet
}).on({
start: m.onStart,
render: m.onRender,
stop: m.onStop,
open: m.onOpen,
close: m.onClose,
set: m.onSet
}), a.autofocus && r.open(), r.trigger("start").trigger("render"))
},
changeSettings: function(a) {
angular.extend(m, a), this.stop(), this.start()
},
render: function(a) {
return a ? r.$root.html(h()) : angular.element(r.$root[0].querySelectorAll("." + n.box)).html(r.component.nodes(o.open)), r.attachLiveEvents(), r.trigger("render")
},
stop: function() {
return o.start ? (r.close(), r._hidden && r._hidden.parentNode.removeChild(r._hidden), r.$root.remove(), p.removeClass(n.input).removeData(d), setTimeout(function() {
p.off("." + o.id)
}, 0), a.type = o.type, a.readOnly = !1, r.trigger("stop"), o.methods = {}, o.start = !1, r) : r
},
open: function(d) {
return o.open ? r : (p.addClass(n.active), c(a, "expanded", !0), r.$root.addClass(n.opened), c(r.$root[0], "hidden", !1), d !== !1 && (o.open = !0, p.triggerHandler("focus"), angular.element(document.querySelectorAll("#" + o.id)).off("click focusin").on("click focusin", function(b) {
var c = b.target;
c != a && c != document && 3 != b.which && r.close(c === r.$root.children()[0])
}), angular.element(document.querySelectorAll("#" + o.id)).off("keydown").on("keydown", function(c) {
var d = c.keyCode,
e = r.component.key[d],
f = c.target;
27 == d ? r.close(!0) : f != a || !e && 13 != d ? r.$root[0].contains(f) && 13 == d && (c.preventDefault(), f.click()) : (c.preventDefault(), e ? b._.trigger(r.component.key.go, r, [b._.trigger(e)]) : angular.element(r.$root[0].querySelectorAll("." + n.highlighted)).hasClass(n.disabled) || r.set("select", r.component.item.highlight).close())
})), r.trigger("open"))
},
close: function(b) {
return b && (p.off("focus." + o.id), p.triggerHandler("focus"), setTimeout(function() {
angular.element(document.querySelectorAll("#" + o.id)).off("focus", l), angular.element(document.querySelectorAll("#" + o.id)).on("focus", l)
}, 0)), p.removeClass(n.active), c(a, "expanded", !1), r.$root.removeClass(n.opened + " " + n.focused), c(r.$root[0], "hidden", !0), c(r.$root[0], "selected", !1), o.open ? (setTimeout(function() {
o.open = !1
}, 0), f.off("." + o.id), r.trigger("close")) : r
},
clear: function() {
return r.set("clear")
},
set: function(a, b, c) {
var d, e, f = angular.isObject(a),
g = f ? a : {};
if (c = f && angular.isObject(b) ? b : c || {}, a) {
f || (g[a] = b);
for (d in g) e = g[d], d in r.component.item && r.component.set(d, e, c), ("select" == d || "clear" == d) && (p[0].value = "clear" == d ? "" : r.get(d, m.format), p.triggerHandler("change"));
r.render()
}
return c.muted ? r : r.trigger("set", g)
},
get: function(c, d) {
return c = c || "value", null != o[c] ? o[c] : "value" == c ? a.value : c in r.component.item ? "string" == typeof d ? b._.trigger(r.component.formats.toString, r.component, [d, r.component.get(c)]) : r.component.get(c) : void 0
},
on: function(a, b) {
var c, d, e = angular.isObject(a),
f = e ? a : {};
if (a) {
e || (f[a] = b);
for (c in f) d = f[c], o.methods[c] = o.methods[c] || [], o.methods[c].push(d)
}
return r
},
off: function() {
var a, b, c = arguments;
for (a = 0, namesCount = c.length; a < namesCount; a += 1) b = c[a], b in o.methods && delete o.methods[b];
return r
},
trigger: function(a, c) {
var d = o.methods[a];
return d && d.map(function(a) {
b._.trigger(a, r, [c])
}), r
}
};
return new q
}
function c(a, b, c) {
if (angular.isObject(b))
for (var e in b) d(a, e, b[e]);
else d(a, b, c)
}
function d(a, b, c) {
angular.element(a).attr(("role" == b ? "" : "aria-") + b, c)
}
function e(a, b) {
angular.isObject(a) || (a = {
attribute: b
}), b = "";
for (var c in a) {
var d = ("role" == c ? "" : "aria-") + c,
e = a[c];
b += null == e ? "" : d + '="' + a[c] + '"'
}
return b
}
var f = angular.element(document);
return b.klasses = function(a) {
return a = a || "picker", {
picker: a,
opened: a + "--opened",
focused: a + "--focused",
input: a + "__input",
active: a + "__input--active",
holder: a + "__holder",
frame: a + "__frame",
wrap: a + "__wrap",
box: a + "__box"
}
}, b._ = {
group: function(a) {
for (var c, d = "", e = b._.trigger(a.min, a); e <= b._.trigger(a.max, a, [e]); e += a.i) c = b._.trigger(a.item, a, [e]), d += b._.node(a.node, c[0], c[1], c[2]);
return d
},
node: function(b, c, d, e) {
return c ? (c = a.isArray(c) ? c.join("") : c, d = d ? ' class="' + d + '"' : "", e = e ? " " + e : "", "<" + b + d + e + ">" + c + "</" + b + ">") : ""
},
lead: function(a) {
return (10 > a ? "0" : "") + a
},
trigger: function(a, b, c) {
return "function" == typeof a ? a.apply(b, c || []) : a
},
digits: function(a) {
return /\d/.test(a[1]) ? 2 : 1
},
isDate: function(a) {
return {}.toString.call(a).indexOf("Date") > -1 && this.isInteger(a.getDate())
},
isInteger: function(a) {
return {}.toString.call(a).indexOf("Number") > -1 && a % 1 === 0
},
ariaAttr: e
}, b.extend = function(a, c) {
angular.element.prototype[a] = function(d, e) {
var f = this.data(a);
if ("picker" == d) return f;
if (f && "string" == typeof d) return b._.trigger(f[d], f, [e]), this;
for (var g = 0; g < this.length; g++) {
var h = angular.element(this[g]);
h.data(a) || new b(h[0], a, c, d)
}
}, angular.element.prototype[a].defaults = c.defaults
}, b
});
/*!
* Date picker for pickadate.js v3.4.0
* http://amsul.github.io/pickadate.js/date.htm
*/
! function(a) {
"function" == typeof define && define.amd ? define(["picker", "angular"], a) : a(Picker, angular)
}(function(a, b) {
function c(a, c) {
var d = this,
e = a.$node[0].value,
f = a.$node.attr("data-value"),
g = f || e,
h = f ? c.formatSubmit : c.format,
i = function() {
return "rtl" === getComputedStyle(a.$root[0]).direction
};
d.settings = c, d.$node = a.$node, d.queue = {
min: "measure create",
max: "measure create",
now: "now create",
select: "parse create validate",
highlight: "parse navigate create validate",
view: "parse create validate viewset",
disable: "deactivate",
enable: "activate"
}, d.item = {}, d.item.disable = (c.disable || []).slice(0), d.item.enable = - function(a) {
return a[0] === !0 ? a.shift() : -1
}(d.item.disable), d.set("min", c.min).set("max", c.max).set("now"), g ? d.set("select", g, {
format: h,
fromValue: !!e
}) : d.set("select", null).set("highlight", d.item.now), d.key = {
40: 7,
38: -7,
39: function() {
return i() ? -1 : 1
},
37: function() {
return i() ? 1 : -1
},
go: function(a) {
var b = d.item.highlight,
c = new Date(b.year, b.month, b.date + a),
e = d.create([c.getFullYear(), c.getMonth(), c.getDate()]);
d.set("select", e).set("highlight", e, {
interval: a
}), this.render()
}
}, a.on("render", function() {
b.element(a.$root[0].querySelectorAll("." + c.klass.selectMonth)).on("change", function() {
var d = this.value;
d && (a.set("highlight", [a.get("view").year, d, a.get("highlight").date]), b.element(a.$root[0].querySelectorAll("." + c.klass.selectMonth)).triggerHandler("focus"))
}), b.element(a.$root[0].querySelectorAll("." + c.klass.selectYear)).on("change", function() {
var d = this.value;
d && (a.set("highlight", [d, a.get("view").month, a.get("highlight").date]), b.element(a.$root[0].querySelectorAll("." + c.klass.selectYear)).triggerHandler("focus"))
})
}).on("open", function() {
b.element(a.$root[0].querySelectorAll("button, select")).attr("disabled", !1)
}).on("close", function() {
b.element(a.$root[0].querySelectorAll("button, select")).attr("disabled", !0)
})
}
var d = 7,
e = 6,
f = a._;
c.prototype.set = function(a, b, c) {
var d = this,
e = d.item;
return null === b ? (e[a] = b, d) : (e["enable" == a ? "disable" : "flip" == a ? "enable" : a] = d.queue[a].split(" ").map(function(e) {
return b = d[e](a, b, c)
}).pop(), "select" == a ? d.set("highlight", e.select, c) : "highlight" == a ? d.set("view", e.highlight, c) : a.match(/^(flip|min|max|disable|enable)$/) && (e.select && d.disabled(e.select) && d.set("select", e.select, c), e.highlight && d.disabled(e.highlight) && d.set("highlight", e.highlight, c)), d)
}, c.prototype.get = function(a) {
return this.item[a]
}, c.prototype.create = function(a, c, d) {
var e, g = this;
return c = void 0 === c ? a : c, c == -(1 / 0) || c == 1 / 0 ? e = c : b.isObject(c) && f.isInteger(c.pick) ? c = c.obj : b.isArray(c) ? (c = new Date(c[0], c[1], c[2]), c = f.isDate(c) ? c : g.create().obj) : c = f.isInteger(c) || f.isDate(c) ? g.normalize(new Date(c), d) : g.now(a, c, d), {
year: e || c.getFullYear(),
month: e || c.getMonth(),
date: e || c.getDate(),
day: e || c.getDay(),
obj: e || c,
pick: e || c.getTime()
}
}, c.prototype.createRange = function(a, c) {
var d = this,
e = function(a) {
return a === !0 || b.isArray(a) || f.isDate(a) ? d.create(a) : a
};
return f.isInteger(a) || (a = e(a)), f.isInteger(c) || (c = e(c)), f.isInteger(a) && b.isObject(c) ? a = [c.year, c.month, c.date + a] : f.isInteger(c) && b.isObject(a) && (c = [a.year, a.month, a.date + c]), {
from: e(a),
to: e(c)
}
}, c.prototype.withinRange = function(a, b) {
return a = this.createRange(a.from, a.to), b.pick >= a.from.pick && b.pick <= a.to.pick
}, c.prototype.overlapRanges = function(a, b) {
var c = this;
return a = c.createRange(a.from, a.to), b = c.createRange(b.from, b.to), c.withinRange(a, b.from) || c.withinRange(a, b.to) || c.withinRange(b, a.from) || c.withinRange(b, a.to)
}, c.prototype.now = function(a, b, c) {
return b = new Date, c && c.rel && b.setDate(b.getDate() + c.rel), this.normalize(b, c)
}, c.prototype.navigate = function(a, c, d) {
var e, f, g, h, i = b.isArray(c),
j = b.isObject(c),
k = this.item.view;
if (i || j) {
for (i ? (f = c[0], g = c[1], h = c[2]) : (f = c.year, g = c.month, h = c.date), d && d.nav && k && k.month !== g && (f = k.year, g = k.month), e = new Date(f, parseInt(g) + parseInt(d && d.nav ? d.nav : 0), 1), f = e.getFullYear(), g = e.getMonth(); new Date(f, g, h).getMonth() !== g;) h -= 1;
c = [f, g, h]
}
return c
}, c.prototype.normalize = function(a) {
return a.setHours(0, 0, 0, 0), a
}, c.prototype.measure = function(a, b) {
var c = this;
return b ? f.isInteger(b) && (b = c.now(a, b, {
rel: b
})) : b = "min" == a ? -(1 / 0) : 1 / 0, b
}, c.prototype.viewset = function(a, b) {
return this.create([b.year, b.month, 1])
}, c.prototype.validate = function(a, c, d) {
var e, g, h, i, j = this,
k = c,
l = d && d.interval ? d.interval : 1,
m = -1 === j.item.enable,
n = j.item.min,
o = j.item.max,
p = m && j.item.disable.filter(function(a) {
if (b.isArray(a)) {
var d = j.create(a).pick;
d < c.pick ? e = !0 : d > c.pick && (g = !0)
}
return f.isInteger(a)
}).length;
if ((!d || !d.nav) && (!m && j.disabled(c) || m && j.disabled(c) && (p || e || g) || !m && (c.pick <= n.pick || c.pick >= o.pick)))
for (m && !p && (!g && l > 0 || !e && 0 > l) && (l *= -1); j.disabled(c) && (Math.abs(l) > 1 && (c.month < k.month || c.month > k.month) && (c = k, l = l > 0 ? 1 : -1), c.pick <= n.pick ? (h = !0, l = 1, c = j.create([n.year, n.month, n.date - 1])) : c.pick >= o.pick && (i = !0, l = -1, c = j.create([o.year, o.month, o.date + 1])), !h || !i);) c = j.create([c.year, c.month, c.date + l]);
return c
}, c.prototype.disabled = function(a) {
var c = this,
d = c.item.disable.filter(function(d) {
return f.isInteger(d) ? a.day === (c.settings.firstDay ? d : d - 1) % 7 : b.isArray(d) || f.isDate(d) ? a.pick === c.create(d).pick : b.isObject(d) ? c.withinRange(d, a) : void 0
});
return d = d.length && !d.filter(function(a) {
return b.isArray(a) && "inverted" == a[3] || b.isObject(a) && a.inverted
}).length, -1 === c.item.enable ? !d : d || a.pick < c.item.min.pick || a.pick > c.item.max.pick
}, c.prototype.parse = function(a, c, d) {
var e, g = this,
h = {};
return !c || f.isInteger(c) || b.isArray(c) || f.isDate(c) || b.isObject(c) && f.isInteger(c.pick) ? c : (d && d.format || (d = d || {}, d.format = g.settings.format), e = "string" != typeof c || d.fromValue ? 0 : 1, g.formats.toArray(d.format).map(function(a) {
var b = g.formats[a],
d = b ? f.trigger(b, g, [c, h]) : a.replace(/^!/, "").length;
b && (h[a] = c.substr(0, d)), c = c.substr(d)
}), [h.yyyy || h.yy, +(h.mm || h.m) - e, h.dd || h.d])
}, c.prototype.formats = function() {
function a(a, b, c) {
var d = a.match(/\w+/)[0];
return c.mm || c.m || (c.m = b.indexOf(d)), d.length
}
function b(a) {
return a.match(/\w+/)[0].length
}
return {
d: function(a, b) {
return a ? f.digits(a) : b.date
},
dd: function(a, b) {
return a ? 2 : f.lead(b.date)
},
ddd: function(a, c) {
return a ? b(a) : this.settings.weekdaysShort[c.day]
},
dddd: function(a, c) {
return a ? b(a) : this.settings.weekdaysFull[c.day]
},
m: function(a, b) {
return a ? f.digits(a) : b.month + 1
},
mm: function(a, b) {
return a ? 2 : f.lead(b.month + 1)
},
mmm: function(b, c) {
var d = this.settings.monthsShort;
return b ? a(b, d, c) : d[c.month]
},
mmmm: function(b, c) {
var d = this.settings.monthsFull;
return b ? a(b, d, c) : d[c.month]
},
yy: function(a, b) {
return a ? 2 : ("" + b.year).slice(2)
},
yyyy: function(a, b) {
return a ? 4 : b.year
},
toArray: function(a) {
return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)
},
toString: function(a, b) {
var c = this;
return c.formats.toArray(a).map(function(a) {
return f.trigger(c.formats[a], c, [0, b]) || a.replace(/^!/, "")
}).join("")
}
}
}(), c.prototype.isDateExact = function(a, c) {
var d = this;
return f.isInteger(a) && f.isInteger(c) || "boolean" == typeof a && "boolean" == typeof c ? a === c : (f.isDate(a) || b.isArray(a)) && (f.isDate(c) || b.isArray(c)) ? d.create(a).pick === d.create(c).pick : b.isObject(a) && b.isObject(c) ? d.isDateExact(a.from, c.from) && d.isDateExact(a.to, c.to) : !1
}, c.prototype.isDateOverlap = function(a, c) {
var d = this;
return f.isInteger(a) && (f.isDate(c) || b.isArray(c)) ? a === d.create(c).day + 1 : f.isInteger(c) && (f.isDate(a) || b.isArray(a)) ? c === d.create(a).day + 1 : b.isObject(a) && b.isObject(c) ? d.overlapRanges(a, c) : !1
}, c.prototype.flipEnable = function(a) {
var b = this.item;
b.enable = a || (-1 == b.enable ? 1 : -1)
}, c.prototype.deactivate = function(a, c) {
var d = this,
e = d.item.disable.slice(0);
return "flip" == c ? d.flipEnable() : c === !1 ? (d.flipEnable(1), e = []) : c === !0 ? (d.flipEnable(-1), e = []) : c.map(function(a) {
for (var c, g = 0; g < e.length; g += 1)
if (d.isDateExact(a, e[g])) {
c = !0;
break
}
c || (f.isInteger(a) || f.isDate(a) || b.isArray(a) || b.isObject(a) && a.from && a.to) && e.push(a)
}), e
}, c.prototype.activate = function(a, c) {
var d = this,
e = d.item.disable,
g = e.length;
return "flip" == c ? d.flipEnable() : c === !0 ? (d.flipEnable(1), e = []) : c === !1 ? (d.flipEnable(-1), e = []) : c.map(function(a) {
var c, h, i, j;
for (i = 0; g > i; i += 1) {
if (h = e[i], d.isDateExact(h, a)) {
c = e[i] = null, j = !0;
break
}
if (d.isDateOverlap(h, a)) {
b.isObject(a) ? (a.inverted = !0, c = a) : b.isArray(a) ? (c = a, c[3] || c.push("inverted")) : f.isDate(a) && (c = [a.getFullYear(), a.getMonth(), a.getDate(), "inverted"]);
break
}
}
if (c)
for (i = 0; g > i; i += 1)
if (d.isDateExact(e[i], a)) {
e[i] = null;
break
}
if (j)
for (i = 0; g > i; i += 1)
if (d.isDateOverlap(e[i], a)) {
e[i] = null;
break
}
c && e.push(c)
}), e.filter(function(a) {
return null != a
})
}, c.prototype.nodes = function(a) {
var b = this,
c = b.settings,
g = b.item,
h = g.now,
i = g.select,
j = g.highlight,
k = g.view,
l = g.disable,
m = g.min,
n = g.max,
o = function(a) {
return c.firstDay && a.push(a.shift()), f.node("thead", f.node("tr", f.group({
min: 0,
max: d - 1,
i: 1,
node: "th",
item: function(b) {
return [a[b], c.klass.weekdays]
}
})))
}((c.showWeekdaysFull ? c.weekdaysFull : c.weekdaysShort).slice(0)),
p = function(a) {
return f.node("div", " ", c.klass["nav" + (a ? "Next" : "Prev")] + (a && k.year >= n.year && k.month >= n.month || !a && k.year <= m.year && k.month <= m.month ? " " + c.klass.navDisabled : ""), "data-nav=" + (a || -1))
},
q = function(b) {
return c.selectMonths ? f.node("select", f.group({
min: 0,
max: 11,
i: 1,
node: "option",
item: function(a) {
return [b[a], 0, "value=" + a + (k.month == a ? " selected" : "") + (k.year == m.year && a < m.month || k.year == n.year && a > n.month ? " disabled" : "")]
}
}), c.klass.selectMonth, a ? "" : "disabled") : f.node("div", b[k.month], c.klass.month)
},
r = function() {
var b = k.year,
d = c.selectYears === !0 ? 5 : ~~(c.selectYears / 2);
if (d) {
var e = m.year,
g = n.year,
h = b - d,
i = b + d;
if (e > h && (i += e - h, h = e), i > g) {
var j = h - e,
l = i - g;
h -= j > l ? l : j, i = g
}
return f.node("select", f.group({
min: h,
max: i,
i: 1,
node: "option",
item: function(a) {
return [a, 0, "value=" + a + (b == a ? " selected" : "")]
}
}), c.klass.selectYear, a ? "" : "disabled")
}
return f.node("div", b, c.klass.year)
};
return f.node("div", p() + p(1) + q(c.showMonthsShort ? c.monthsShort : c.monthsFull) + r(), c.klass.header) + f.node("table", o + f.node("tbody", f.group({
min: 0,
max: e - 1,
i: 1,
node: "tr",
item: function(a) {
var e = c.firstDay && 0 === b.create([k.year, k.month, 1]).day ? -7 : 0;
return [f.group({
min: d * a - k.day + e + 1,
max: function() {
return this.min + d - 1
},
i: 1,
node: "td",
item: function(a) {
a = b.create([k.year, k.month, a + (c.firstDay ? 1 : 0)]);
var d = i && i.pick == a.pick,
e = j && j.pick == a.pick,
g = l && b.disabled(a) || a.pick < m.pick || a.pick > n.pick;
return [f.node("div", a.date, function(b) {
return b.push(k.month == a.month ? c.klass.infocus : c.klass.outfocus), h.pick == a.pick && b.push(c.klass.now), d && b.push(c.klass.selected), e && b.push(c.klass.highlighted), g && b.push(c.klass.disabled), b.join(" ")
}([c.klass.day]), "data-pick=" + a.pick + " " + f.ariaAttr({
role: "button",
controls: b.$node[0].id,
checked: d && b.$node[0].value === f.trigger(b.formats.toString, b, [c.format, a]) ? !0 : null,
activedescendant: e ? !0 : null,
disabled: g ? !0 : null
}))]
}
})]
}
})), c.klass.table) + f.node("div", f.node("button", c.today, c.klass.buttonToday, "type=button data-pick=" + h.pick + (a ? "" : " disabled")) + f.node("button", c.clear, c.klass.buttonClear, "type=button data-clear=1" + (a ? "" : " disabled")) + f.node("button", c.close, c.klass.buttonClose, "type=button data-close=true " + (a ? "" : " disabled")), c.klass.footer)
}, c.defaults = function(a) {
var klassForAllLanguages = {
table: a + "table",
header: a + "header",
navPrev: a + "nav--prev",
navNext: a + "nav--next",
navDisabled: a + "nav--disabled",
month: a + "month",
year: a + "year",
selectMonth: a + "select--month",
selectYear: a + "select--year",
weekdays: a + "weekday",
day: a + "day",
disabled: a + "day--disabled",
selected: a + "day--selected",
highlighted: a + "day--highlighted",
now: a + "day--today",
infocus: a + "day--infocus",
outfocus: a + "day--outfocus",
footer: a + "footer",
buttonClear: a + "button--clear",
buttonClose: a + "button--close",
buttonToday: a + "button--today"
};
var lang = localStorage.getItem('dtm-language');
if(lang == 'fr') {
//French date picker
return {
monthsFull: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Juin", "Juil", "Aoû", "Sep", "Oct", "Nov", "Déc"],
weekdaysFull: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
weekdaysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"],
today: "Ce jour",
clear: "Effacer",
close: "Fermer",
format: "d mmmm, yyyy",
klass: klassForAllLanguages
}
} else if(lang == 'ro') {
//French date picker
return {
monthsFull: ["Ianuarie "," Februarie "," Martie "," Aprilie "," Mai "," Iunie "," Iulie "," August "," Septembrie "," Octombrie "," Noiembrie "," Decembrie"],
monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Noi", "Dec"],
weekdaysFull: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"],
weekdaysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm"],
today: "Astăzi",
clear: "Clar",
close: "Închide",
format: "d mmmm, yyyy",
klass: klassForAllLanguages
}
}
else {
//English date picker by default
return {
monthsFull: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
weekdaysFull: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
today: "Today",
clear: "Clear",
close: "Close",
format: "d mmmm, yyyy",
klass: klassForAllLanguages
}
}
}(a.klasses().picker + "__"), a.extend("pickadate", c)
});
/*!
* Time picker for pickadate.js v3.4.0
* http://amsul.github.io/pickadate.js/time.htm
*/
! function(a) {
"function" == typeof define && define.amd ? define(["picker", "angular"], a) : a(Picker, angular)
}(function(a, b) {
function c(a, b) {
var c = this,
d = a.$node[0].value,
e = a.$node.data("value"),
f = e || d,
g = e ? b.formatSubmit : b.format;
c.settings = b, c.$node = a.$node, c.queue = {
interval: "i",
min: "measure create",
max: "measure create",
now: "now create",
select: "parse create validate",
highlight: "parse create validate",
view: "parse create validate",
disable: "deactivate",
enable: "activate"
}, c.item = {}, c.item.interval = b.interval || 30, c.item.disable = (b.disable || []).slice(0), c.item.enable = - function(a) {
return a[0] === !0 ? a.shift() : -1
}(c.item.disable), c.set("min", b.min).set("max", b.max).set("now"), f ? c.set("select", f, {
format: g,
fromValue: !!d
}) : c.set("select", null).set("highlight", c.item.now), c.key = {
40: 1,
38: -1,
39: 1,
37: -1,
go: function(a) {
c.set("highlight", c.item.highlight.pick + a * c.item.interval, {
interval: a * c.item.interval
}), this.render()
}
}, a.on("render", function() {
var c = a.$root.children(),
d = c.find("." + b.klass.viewset);
d.length && (c[0].scrollTop = ~~d.position().top - 2 * d[0].clientHeight)
}).on("open", function() {
a.$root.find("button").attr("disable", !1)
}).on("close", function() {
a.$root.find("button").attr("disable", !0)
})
}
var d = 24,
e = 60,
f = 12,
g = d * e,
h = a._;
c.prototype.set = function(a, b, c) {
var d = this,
e = d.item;
return null === b ? (e[a] = b, d) : (e["enable" == a ? "disable" : "flip" == a ? "enable" : a] = d.queue[a].split(" ").map(function(e) {
return b = d[e](a, b, c)
}).pop(), "select" == a ? d.set("highlight", e.select, c) : "highlight" == a ? d.set("view", e.highlight, c) : "interval" == a ? d.set("min", e.min, c).set("max", e.max, c) : a.match(/^(flip|min|max|disable|enable)$/) && ("min" == a && d.set("max", e.max, c), e.select && d.disabled(e.select) && d.set("select", e.select, c), e.highlight && d.disabled(e.highlight) && d.set("highlight", e.highlight, c)), d)
}, c.prototype.get = function(a) {
return this.item[a]
}, c.prototype.create = function(a, c, f) {
var i = this;
return c = void 0 === c ? a : c, h.isDate(c) && (c = [c.getHours(), c.getMinutes()]), b.isObject(c) && h.isInteger(c.pick) ? c = c.pick : b.isArray(c) ? c = +c[0] * e + +c[1] : h.isInteger(c) || (c = i.now(a, c, f)), "max" == a && c < i.item.min.pick && (c += g), "min" != a && "max" != a && (c - i.item.min.pick) % i.item.interval !== 0 && (c += i.item.interval), c = i.normalize(a, c, f), {
hour: ~~(d + c / e) % d,
mins: (e + c % e) % e,
time: (g + c) % g,
pick: c
}
}, c.prototype.createRange = function(a, c) {
var d = this,
e = function(a) {
return a === !0 || b.isArray(a) || h.isDate(a) ? d.create(a) : a
};
解决方案
推荐阅读
- php - php 检查数组中的特定值是否包含大于 0 的值
- zsh - 我如何确定为什么这个 `test` 与 tmux 的 session_name 不匹配?
- c# - 将 SQL 查询转换为 linq lambda Entity Framework Core
- postgresql - 聚合函数作为元组参数 postgres
- python - 你如何比较字典和列表
- websphere - 如何在项目的资产类型中添加笔记本?
- javascript - 有没有办法使用 javascript 将样式应用于突出显示的文本?
- google-apps-script - 如何从谷歌脚本向 BigQuery 发出正确的 HTTP 请求
- java - Spring Boot 2.x Servlet Path 在测试中被忽略
- php - 在 Lumen 7 中验证时如何返回自定义 JSON 数组名称和内部元素?