很多人都在问, 在layui处理表单验证时, 因为后台取值为null时, select非空验证没有自动处理null或underfined.
这里提供一个在我看来比较好的解决办法:
修改form.js 源代码中 d=r.val(); 替换为d=r.val()||'';
获取值验证时进行值得判断和替换,解决问题
var d = function() {
var e = t(this),
a = f.config.verify,
s = null,
o = "layui-form-danger",
c = {},
u = e.parents(r),
d = u.find("*[lay-verify]"),
v = e.parents("form")[0],
h = u.find("input,select,textarea"),
y = e.attr("lay-filter");
if (layui.each(d, function(e, l) {
var r = t(this),
c = r.attr("lay-verify").split("|"),
u = r.attr("lay-verType"),
d = r.val()||''; //-------------这个位置---------------
if (r.removeClass(o), layui.each(c, function(e, t) {
var c, f = "",
v = "function" == typeof a[t];
if (a[t]) {
var c = v ? f = a[t](d, l) : !a[t][0].test(d);
if (f = f || a[t][1], "required" === t && (f = r.attr("lay-reqText") || f), c) return "tips" === u ? i.tips(f, function() {
return "string" == typeof r.attr("lay-ignore") || "select" !== l.tagName.toLowerCase() && !/^checkbox|radio$/.test(l.type) ? r : r.next()
}(), {
tips: 1
}) : "alert" === u ? i.alert(f, {
title: "提示",
shadeClose: !0
}) : i.msg(f, {
icon: 5,
shift: 6
}), n.android || n.ios || setTimeout(function() {
l.focus()
}, 7), r.addClass(o), s = !0
}
}), s) return s
}), s) return !1;
var p = {};