UNPKG

nuijs

Version:

nui框架

70 lines (64 loc) 2.48 kB
/** * Nui&jQuery扩展 */ Nui.define(function(){ Nui.win = $(window); Nui.doc = $(document); var prop = $.fn.prop; var serializeArray = $.fn.serializeArray; $.fn.extend({ /** * @func 添加或者移除表单属性 * @param name <String> * @param value <String, Boolean> * @param className <String, Function> 当第二个参数为false时移除类名,否则增加类名 */ prop:function(){ var args = arguments, arr = Array.prototype.slice.call(args, 0, 2), $ele = $(this), cls = args[2]; if(typeof cls === 'function'){ cls = cls.apply(this, arr) } if(cls){ $ele[args[1] === false ? 'removeClass':'addClass'](cls) } return prop.apply(this, arr) }, /** * @func 序列化表单值转成url参数形式 * @param disabled <Boolean> 是否包含禁用元素 */ serialize:function(disabled){ return $.param(this.serializeArray(disabled)); }, /** * @func 序列化表单值转为JSON数组 * @param disabled <Boolean> 是否包含禁用元素 */ serializeArray:function(disabled){ if(!disabled){ return serializeArray.call(this) } return this.map(function(){ var elements = $.prop(this, 'elements'); return elements ? $.makeArray(elements) : this; }) .filter(function(){ var type = this.type; return this.name && this.nodeName && (/^(?:input|select|textarea|keygen)/i).test(this.nodeName) && !(/^(?:submit|button|image|reset|file)$/i).test(type) && (this.checked || !(/^(?:checkbox|radio)$/i).test(type)); }) .map(function(i, elem){ var val = $(this).val(); return val == null ? null : $.isArray(val) ? $.map(val, function(val){ return {name: elem.name, value: val.replace( /\r?\n/g, "\r\n" )}; }) : {name: elem.name, value: val.replace( /\r?\n/g, "\r\n" )}; }).get(); } }) })