layui-js/build/lay/modules/form.js
2016-11-11 11:46:21 +08:00

2 lines
4.9 KiB
JavaScript

/** layui-v1.0.3 LGPL license By www.layui.com */
;layui.define("layer",function(e){"use strict";var i=layui.jquery,a=layui.layer,t=layui.hint(),n=layui.device(),l="form",c=".layui-form",s="layui-this",r=function(){this.config={verify:{required:[/[\S]+/,"必填项不能为空"],phone:[/^1\d{10}$/,"请输入正确的手机号"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"邮箱格式不正确"],url:[/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,"链接格式不正确"],number:[/^\d+$/,"只能填写数字"],date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"日期格式不正确"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"请输入正确的身份证号"]}}};r.prototype.set=function(e){var a=this;return i.extend(!0,a.config,e),a},r.prototype.verify=function(e){var a=this;return i.extend(!0,a.config.verify,e),a},r.prototype.on=function(e,i){return layui.onevent(l,e,i)},r.prototype.render=function(e){var a=this,n={select:function(){var e="请选择",a="layui-form-select",t="layui-select-title",n=i(c).find("select"),r=function(e,n){i(e.target).parent().hasClass(t)&&!n||i("."+a).removeClass(a+"ed")},o=function(e){var n=i(this),c=e.find("."+t);c.on("click",function(i){e.hasClass(a+"ed")?e.removeClass(a+"ed"):(r(i,!0),e.addClass(a+"ed"))}),e.find("dl>dd").on("click",function(){var e=i(this),a=e.attr("lay-value"),t=n.attr("lay-filter");n.val(a).removeClass("layui-form-danger"),c.find("input").val(e.text()),e.addClass(s).siblings().removeClass(s),layui.event(l,"select("+t+")",{elem:n[0],value:a})}),e.find("dl>dt").on("click",function(e){layui.stope(e)}),i(document).off("click",r).on("click",r)};n.each(function(n,l){var c=i(this),r=c.next("."+a),u=l.value,d=i(l.options[l.selectedIndex]),f=i(['<div class="layui-unselect '+a+'">','<div class="'+t+'"><input type="text" placeholder="'+(l.options[0].innerHTML?l.options[0].innerHTML:e)+'" value="'+(u?d.html():"")+'" readonly class="layui-input layui-unselect">','<i class="layui-edge"></i></div>','<dl class="layui-anim layui-anim-upbit'+(c.find("optgroup")[0]?" layui-select-group":"")+'">'+function(e){var i=[];return layui.each(e,function(e,a){(0!==e||a.value)&&("optgroup"===a.tagName.toLowerCase()?i.push("<dt>"+a.label+"</dt>"):i.push('<dd lay-value="'+a.value+'" '+(u===a.value?'class="'+s+'"':"")+">"+a.innerHTML+"</dd>"))}),i.join("")}(c.find("*"))+"</dl>","</div>"].join(""));r[0]&&r.remove(),c.after(f),o.call(this,f)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},a=i(c).find("input[type=checkbox]"),t=function(e,a){var t=i(this);e.on("click",function(){var i=t.attr("lay-filter");t[0].checked?(t[0].checked=!1,e.removeClass(a[1])):(t[0].checked=!0,e.addClass(a[1])),layui.event(l,a[2]+"("+i+")",{elem:t[0],value:t[0].value})})};a.each(function(a,n){var l=i(this),c=l.attr("lay-skin");"switch"===c&&(c="_"+c);var s=e[c]||e.checkbox,r=l.next("."+s[0]),o=i(['<div class="layui-unselect '+s[0]+(n.checked?" "+s[1]:"")+'">',{_switch:"<i></i>"}[c]||"<span>"+(n.title||"勾选")+'</span><i class="layui-icon">&#xe618;</i>',"</div>"].join(""));r[0]&&r.remove(),l.after(o),t.call(this,o,s)})},radio:function(){var e="layui-form-radio",a=["&#xe643;","&#xe63f;"],t=i(c).find("input[type=radio]"),n=function(t){var n=i(this),s="layui-anim-scaleSpring";t.on("click",function(){var r=n[0].name,o=n.parents(c),u=n.attr("lay-filter"),d=o.find("input[name="+r+"]");layui.each(d,function(){var t=i(this).next("."+e);this.checked=!1,t.removeClass(e+"ed"),t.find(".layui-icon").removeClass(s).html(a[1])}),n[0].checked=!0,t.addClass(e+"ed"),t.find(".layui-icon").addClass(s).html(a[0]),layui.event(l,"radio("+u+")",{elem:n[0],value:n[0].value})})};t.each(function(t,l){var c=i(this),s=c.next("."+e),r=i(['<div class="layui-unselect '+e+(l.checked?" "+e+"ed":"")+'">','<i class="layui-anim layui-icon">'+a[l.checked?0:1]+"</i>","<span>"+(l.title||"未命名")+"</span>","</div>"].join(""));s[0]&&s.remove(),c.after(r),n.call(this,r)})}};return e?n[e]?n[e]():t.error("不支持的"+e+"表单渲染"):layui.each(n,function(e,i){i()}),a};var o=function(){var e=i(this),t=u.config.verify,s=null,r="layui-form-danger",o={},d=e.parents(c),f=d.find("*[lay-verify]"),y=e.parents("form")[0],v=d.find("input,select,textarea"),h=e.attr("lay-filter");return layui.each(f,function(e,l){var c=i(this),o=c.attr("lay-verify"),u="",d=c.val(),f="function"==typeof t[o];if(c.removeClass(r),t[o]&&(f?u=t[o](d,l):!t[o][0].test(d)))return a.msg(u||t[o][1],{icon:5,shift:6}),n.android||n.ios||l.focus(),c.addClass(r),s=!0}),!s&&(layui.each(v,function(e,i){i.name&&(/^checkbox|radio$/.test(i.type)&&!i.checked||(o[i.name]=i.value))}),layui.event.call(this,l,"submit("+h+")",{elem:this,form:y,field:o}))},u=new r,d=i(document);u.render(),d.on("reset",c,function(){setTimeout(function(){u.render()},50)}),d.on("submit",c,o).on("click","*[lay-submit]",o),e(l,function(e){return u.set(e)})});