/base/000_base/node_modules/jquery/src/serialize.js |
@@ -0,0 +1,130 @@ |
define( [ |
"./core", |
"./manipulation/var/rcheckableType", |
"./core/init", |
"./traversing", // filter |
"./attributes/prop" |
], function( jQuery, rcheckableType ) { |
|
"use strict"; |
|
var |
rbracket = /\[\]$/, |
rCRLF = /\r?\n/g, |
rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, |
rsubmittable = /^(?:input|select|textarea|keygen)/i; |
|
function buildParams( prefix, obj, traditional, add ) { |
var name; |
|
if ( Array.isArray( obj ) ) { |
|
// Serialize array item. |
jQuery.each( obj, function( i, v ) { |
if ( traditional || rbracket.test( prefix ) ) { |
|
// Treat each array item as a scalar. |
add( prefix, v ); |
|
} else { |
|
// Item is non-scalar (array or object), encode its numeric index. |
buildParams( |
prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", |
v, |
traditional, |
add |
); |
} |
} ); |
|
} else if ( !traditional && jQuery.type( obj ) === "object" ) { |
|
// Serialize object item. |
for ( name in obj ) { |
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); |
} |
|
} else { |
|
// Serialize scalar item. |
add( prefix, obj ); |
} |
} |
|
// Serialize an array of form elements or a set of |
// key/values into a query string |
jQuery.param = function( a, traditional ) { |
var prefix, |
s = [], |
add = function( key, valueOrFunction ) { |
|
// If value is a function, invoke it and use its return value |
var value = jQuery.isFunction( valueOrFunction ) ? |
valueOrFunction() : |
valueOrFunction; |
|
s[ s.length ] = encodeURIComponent( key ) + "=" + |
encodeURIComponent( value == null ? "" : value ); |
}; |
|
// If an array was passed in, assume that it is an array of form elements. |
if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { |
|
// Serialize the form elements |
jQuery.each( a, function() { |
add( this.name, this.value ); |
} ); |
|
} else { |
|
// If traditional, encode the "old" way (the way 1.3.2 or older |
// did it), otherwise encode params recursively. |
for ( prefix in a ) { |
buildParams( prefix, a[ prefix ], traditional, add ); |
} |
} |
|
// Return the resulting serialization |
return s.join( "&" ); |
}; |
|
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; |
|
// Use .is( ":disabled" ) so that fieldset[disabled] works |
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(); |
|
if ( val == null ) { |
return null; |
} |
|
if ( Array.isArray( val ) ) { |
return jQuery.map( val, function( val ) { |
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; |
} ); |
} |
|
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; |
} ).get(); |
} |
} ); |
|
return jQuery; |
} ); |