!(function (e) {
"use strict";
e.fn.jbvalidator = function (t) {
t = e.extend(
{},
{
language: "",
errorMessage: !0,
successClass: !1,
html5BrowserDefault: !1,
validFeedBackClass: "valid-feedback",
invalidFeedBackClass: "invalid-feedback",
validClass: "is-valid",
invalidClass: "is-invalid",
},
t
);
let a = this,
i = {
"maxValue": "值必须小于或等于%s.",
"minValue": "值必须大于或等于%s.",
"maxLength": "请将此文本删减到%s个字符或更少(您当前输入的是%s个字符).",
"minLength": "请将此文本延长到%s个字符或更多(您当前使用的是%s个字符)。",
"minSelectOption": "请至少选择%s个选项.",
"maxSelectOption": "请最多选择%s个选项.",
"groupCheckBox": "请至少选择%s个选项.",
"equal": "此字段与%s字段不匹配.",
"fileMinSize": "文件大小不能小于%s字节.",
"fileMaxSize": "文件大小不能超过%s字节.",
"number": "请输入一个数字.",
"HTML5": {
"valueMissing": {
"INPUT": {
"default": "请填写该字段.",
"checkbox": "请勾选此选择框.",
"radio": "请选择以下选项之一.",
"file": "请上传文件."
},
"SELECT": "请在列表中选择一个项目.",
"TEXTAREA": "请填写此字段."
},
"typeMismatch": {
"email": "请输入有效电子邮件地址.",
"url": "请输入URL."
},
"rangeUnderflow": {
"date": "值必须为%s或更高.",
"month": "值必须为%s或更高.",
"week": "值必须为%s或更高.",
"time": "值必须为%s或更高.",
"datetimeLocale": "值必须为%s或更高.",
"number": "值必须大于或等于%s.",
"range": "值必须大于或等于%s."
},
"rangeOverflow": {
"date": "值必须为%s或更早.",
"month": "值必须为%s或更早.",
"week": "值必须为%s或更早.",
"time": "值必须为%s或更早.",
"datetimeLocale": "值必须为%s或更早.",
"number": "值必须小于或等于%s.",
"range": "值必须小于或等于%s."
},
"stepMismatch": {
"date": "您只能选择日期日历中的每%s天.",
"month": "您只能选择日期日历中的每%s个月.",
"week": "您只能选择日期日历中的每%s周一次.",
"time": "您只能在时间选择器中选择每%s秒一次.",
"datetimeLocale": "您只能在时间选择器中选择每%s秒一次.",
"number": "请输入有效值.只有%s和%s的倍数.",
"range": "请输入有效值.只有%s和%s的倍数."
},
"tooLong": "请将此文本延长到%s个字符或更少(您当前使用的是%s个字符).",
"tooShort": "请将此文本延长到%s个字符或更多(您当前使用的是%s个字符).",
"patternMismatch": "请匹配请求格式. %s",
"badInput": {
"number": "请输入一个数字."
}
},
};
const n = "input, textarea, select";
let l = 0;
t.language &&
e.getJSON(t.language, function (e) {
i = e;
}),
e(a).on("submit", function (e) {
(l = 0), r(this, e), l && (e.preventDefault(), e.stopPropagation());
});
let r = function (t, i) {
let r = i || "";
return (
(l = 0),
e(t || a)
.find(n)
.each((e, t) => {
o(t, r);
}),
l
);
},
s = function () {
e(a)
.find(n)
.each((t, a) => {
e(a).off("input"),
e(a).on("input", function (t) {
if ((o(this, t), p(a, "data-v-equal"))) {
let t = e(a).attr("data-v-equal");
e(t).one("input", function () {
let t = e(this).attr("id");
e('[data-v-equal="#' + t + '"]').trigger("input");
});
}
});
});
},
o = function (e, a) {
e.setCustomValidity(""),
!1 !== e.checkValidity()
? Object.values(f).map((t) => {
let i = t.call(t, e, a);
i && e.setCustomValidity(i);
})
: t.html5BrowserDefault || e.setCustomValidity(d(e)),
!1 === e.checkValidity() ? (u(e, e.validationMessage), l++) : c(e);
},
u = function (a, i) {
if (
(e(a).removeClass(t.validClass),
e(a).addClass(t.invalidClass),
(i = e(a).data("vMessage") ?? i),
t.errorMessage)
) {
let n = e(a).parent();
if (e(n).length) {
let a = e(n).find("." + t.invalidFeedBackClass);
e(a).length
? e(a).html(i)
: e(n).append(
'
' + i + "
"
);
}
}
},
c = function (a) {
e(a).removeClass(t.invalidClass),
t.successClass && e(a).addClass(t.validClass);
},
f = {
multiSelectMin: function (t) {
if ("SELECT" === e(t).prop("tagName") && e(t).prop("multiple")) {
let a = e(t).data("vMinSelect"),
n = e(t).find("option:selected").length;
if (n < a && (e(t).prop("require") || n > 0))
return i.minSelectOption.sprintf(a);
}
return "";
},
multiSelectMax: function (t) {
if ("SELECT" === e(t).prop("tagName") && e(t).prop("multiple")) {
let a = e(t).data("vMaxSelect"),
n = e(t).find("option:selected").length;
if (n > a && (e(t).prop("require") || n > 0))
return i.maxSelectOption.sprintf(a);
}
return "";
},
equal: function (t) {
let a = e(t).data("vEqual");
if (a) {
let n = e(a).attr("title");
if (e(a).val() !== e(t).val()) return i.equal.sprintf(n || "");
}
return "";
},
groupCheckBox: function (t, a) {
if (p(t, "type", "checkbox")) {
let n = e(t).closest("[data-checkbox-group]"),
l = e(n).data("vMinSelect"),
r = n.find("input[type=checkbox]:checked").length,
s = void 0 === e(n).data("vRequired") ? 0 : 1;
if (
n &&
(void 0 !== a.originalEvent &&
"input" === a.originalEvent.type &&
e(n)
.find("input[type=checkbox]")
.each((t, a) => {
e(a).trigger("input");
}),
r < l && (s || r > 0) && !1 === e(t).prop("checked"))
)
return i.groupCheckBox.sprintf(l);
}
return "";
},
customMin: function (t) {
if (p(t, "data-v-min")) {
let a = e(t).data("vMin"),
n = e(t).val();
if (isNaN(n) && (e(t).prop("require") || n.length > 0))
return i.number;
if (n < a && (e(t).prop("require") || n.length > 0))
return i.minValue.sprintf(a);
}
return "";
},
customMax: function (t) {
if (p(t, "data-v-max")) {
let a = e(t).data("vMax"),
n = e(t).val();
if (isNaN(n) && (e(t).prop("require") || n.length > 0))
return i.number;
if (n > a && (e(t).prop("require") || n.length > 0))
return i.maxValue.sprintf(a);
}
return "";
},
customMinLength: function (t) {
if (p(t, "data-v-min-length")) {
let a = e(t).data("vMinLength"),
n = e(t).val().length;
if (n < a && (e(t).prop("require") || n > 0))
return i.minLength.sprintf(a, n);
}
return "";
},
customMaxLength: function (t) {
if (p(t, "data-v-max-length")) {
let a = e(t).data("vMaxLength"),
n = e(t).val().length;
if (n > a && (e(t).prop("require") || n > 0))
return i.maxLength.sprintf(a, n);
}
return "";
},
fileMinSize: function (t) {
if (p(t, "type", "file")) {
let a = e(t).data("vMinSize");
for (let e = 0; e < t.files.length; e++)
if (a && a > t.files[e].size) return i.fileMinSize.sprintf(a);
}
return "";
},
fileMaxSize: function (t) {
if (p(t, "type", "file")) {
let a = e(t).data("vMaxSize");
for (let e = 0; e < t.files.length; e++)
if (a && a < t.files[e].size) return i.fileMaxSize.sprintf(a);
}
return "";
},
},
d = function (t) {
if (t.validity.valueMissing) {
if ("INPUT" === t.tagName)
return void 0 === i.HTML5.valueMissing.INPUT[t.type]
? i.HTML5.valueMissing.INPUT.default
: i.HTML5.valueMissing.INPUT[t.type];
if (void 0 !== i.HTML5.valueMissing[t.tagName])
return i.HTML5.valueMissing[t.tagName];
} else if (t.validity.typeMismatch) {
if (void 0 !== i.HTML5.typeMismatch[t.type])
return i.HTML5.typeMismatch[t.type];
} else if (t.validity.rangeOverflow) {
if (void 0 !== i.HTML5.rangeOverflow[t.type]) {
let e = t.getAttribute("max") ?? null;
return (
("date" !== t.type && "month" !== t.type) ||
(e = new Date(e).toLocaleDateString()),
"week" === t.type && (e = "Week " + e.substr(6)),
i.HTML5.rangeOverflow[t.type].sprintf(e)
);
}
} else if (t.validity.rangeUnderflow) {
if (void 0 !== i.HTML5.rangeUnderflow[t.type]) {
let e = t.getAttribute("min") ?? null;
return (
("date" !== t.type && "month" !== t.type) ||
(e = new Date(e).toLocaleDateString()),
"week" === t.type && (e = "Week " + e.substr(6)),
i.HTML5.rangeUnderflow[t.type].sprintf(e)
);
}
} else if (t.validity.stepMismatch) {
if (void 0 !== i.HTML5.stepMismatch[t.type]) {
let e = t.getAttribute("step") ?? null;
return (
("date" !== t.type && "month" !== t.type) ||
(e = new Date(e).toLocaleDateString()),
"week" === t.type && (e = "Week " + e.substr(6)),
i.HTML5.stepMismatch[t.type].sprintf(e, e)
);
}
} else {
if (t.validity.tooLong) {
let a = t.getAttribute("maxlength") ?? null,
n = e(t).val();
return i.HTML5.tooLong.sprintf(a, n.length);
}
if (t.validity.tooShort) {
let a = t.getAttribute("minlength") ?? null,
n = e(t).val();
return i.HTML5.tooShort.sprintf(a, n.length);
}
if (t.validity.patternMismatch) {
if (p(t, "pattern") && p(t, "title")) return e(t).attr("title");
let a = t.getAttribute("pattern") ?? null;
return i.HTML5.patternMismatch.sprintf(a);
}
if (t.validity.badInput && void 0 !== i.HTML5.badInput[t.type])
return i.HTML5.badInput[t.type];
}
return t.validationMessage ?? "";
};
function p(t, a, i = "") {
let n = e(t).attr(a);
if (void 0 !== n && !1 !== n) {
if (!i) return !0;
if (i === n) return !0;
}
return !1;
}
return (
(String.prototype.sprintf = function () {
for (var e = this.toString(), t = 0; t < arguments.length; t++) {
var a = parseFloat(arguments[t]);
if (a || 0 == a) {
var i = a > 1 || 0 == a ? "s" : "";
e = e.replace(/%s {1}(\w+)\(s\){1}/, "%s $1" + i);
}
e = e.replace("%s", arguments[t]);
}
return e;
}),
s(),
{
validator: f,
errorTrigger: function (e, t) {
"object" == typeof e && (e = e[0]),
e.setCustomValidity(t),
u(e, e.validationMessage);
},
reload: function () {
s();
},
checkAll: r,
}
);
};
})(jQuery);