表单序列化 不根据name value 根据自定义key value完成

来源:互联网 发布:word是网络通信软件吗 编辑:程序博客网 时间:2024/06/09 22:36
var rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i; 
var rsubmittable = /^(?:input|select|textarea|keygen)/i;  
var rcheckableType = (/^(?:checkbox|radio)$/i);  
var rCRLF = /\r?\n/g;  
// jQuery.fn.extend({  
//     serialize: function() {  
//         return jQuery.param( this.serializeArray() );  
//     },  
//     serializeArray(): function() {  
//         return this.map(function() {  
//             // Can add propHook for "elements" to filter or add form elements  
//             var elements = jQuery.prop( this, "elements" );  
//             return elements ? jQuery.makeArray( elements ) : this;  
//         })  
//         .filter(function() {  
//             var type = this.type;  
//             return this.name && !jQuery( this ).is( ":disabled" ) &&  
//                 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&  
//                 ( this.checked || !rcheckableType.test( type ) );  
//         })  
//         .map(function( i, elem ) {  
//             var val = jQuery( this ).val();  
//             return val == null ?  
//                 null :  
//                 jQuery.isArray( val ) ?  
//                     jQuery.map( val, function( val ) {  
//                         return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };  
//                     }) :  
//                     { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };  
//         }).get();  
//     }  
// });  
jQuery.fn.extend({  
    serArray: function() {  
        return this.map(function() {  
            var elements = jQuery.prop( this, "elements" );  
            return elements ? jQuery.makeArray( elements ) : this;  
        })  
        .filter(function() {  
            var type = this.type;  
            return jQuery( this ).attr("key") && !jQuery( this ).is( ":disabled" ) &&  
                rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&  
                ( this.checked || !rcheckableType.test( type ) );  
        })  
        .map(function( i, elem ) {    
            var val = jQuery( this ).val(); 
            var key = jQuery( this ).attr("key"); 
            return val == null ?  
                null :  
                jQuery.isArray( val ) ?  
                    jQuery.map( val, function( val ) {  
                        return { key: key, value: val.replace( rCRLF, "\r\n" ) };  
                    }) :  
                    { key: key, value: val.replace( rCRLF, "\r\n" ) };  
        }).get();  
    }  
}); 
原创粉丝点击