root / drupal7 / sites / all / libraries / flexslider-2.5.0 / bower_components / jquery / src / serialize.js @ 0aee3c58
1 |
define([ |
---|---|
2 |
"./core",
|
3 |
"./manipulation/var/rcheckableType",
|
4 |
"./core/init",
|
5 |
"./traversing", // filter |
6 |
"./attributes/prop"
|
7 |
], function( jQuery, rcheckableType ) {
|
8 |
|
9 |
var r20 = /%20/g, |
10 |
rbracket = /\[\]$/,
|
11 |
rCRLF = /\r?\n/g,
|
12 |
rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
|
13 |
rsubmittable = /^(?:input|select|textarea|keygen)/i;
|
14 |
|
15 |
function buildParams( prefix, obj, traditional, add ) { |
16 |
var name;
|
17 |
|
18 |
if ( jQuery.isArray( obj ) ) {
|
19 |
// Serialize array item.
|
20 |
jQuery.each( obj, function( i, v ) {
|
21 |
if ( traditional || rbracket.test( prefix ) ) {
|
22 |
// Treat each array item as a scalar.
|
23 |
add( prefix, v ); |
24 |
|
25 |
} else {
|
26 |
// Item is non-scalar (array or object), encode its numeric index.
|
27 |
buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); |
28 |
} |
29 |
}); |
30 |
|
31 |
} else if ( !traditional && jQuery.type( obj ) === "object" ) { |
32 |
// Serialize object item.
|
33 |
for ( name in obj ) { |
34 |
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); |
35 |
} |
36 |
|
37 |
} else {
|
38 |
// Serialize scalar item.
|
39 |
add( prefix, obj ); |
40 |
} |
41 |
} |
42 |
|
43 |
// Serialize an array of form elements or a set of
|
44 |
// key/values into a query string
|
45 |
jQuery.param = function( a, traditional ) { |
46 |
var prefix,
|
47 |
s = [], |
48 |
add = function( key, value ) { |
49 |
// If value is a function, invoke it and return its value
|
50 |
value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); |
51 |
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
|
52 |
}; |
53 |
|
54 |
// Set traditional to true for jQuery <= 1.3.2 behavior.
|
55 |
if ( traditional === undefined ) { |
56 |
traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; |
57 |
} |
58 |
|
59 |
// If an array was passed in, assume that it is an array of form elements.
|
60 |
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
|
61 |
// Serialize the form elements
|
62 |
jQuery.each( a, function() {
|
63 |
add( this.name, this.value ); |
64 |
}); |
65 |
|
66 |
} else {
|
67 |
// If traditional, encode the "old" way (the way 1.3.2 or older
|
68 |
// did it), otherwise encode params recursively.
|
69 |
for ( prefix in a ) { |
70 |
buildParams( prefix, a[ prefix ], traditional, add ); |
71 |
} |
72 |
} |
73 |
|
74 |
// Return the resulting serialization
|
75 |
return s.join( "&" ).replace( r20, "+" ); |
76 |
}; |
77 |
|
78 |
jQuery.fn.extend({ |
79 |
serialize: function() { |
80 |
return jQuery.param( this.serializeArray() ); |
81 |
}, |
82 |
serializeArray: function() { |
83 |
return this.map(function() { |
84 |
// Can add propHook for "elements" to filter or add form elements
|
85 |
var elements = jQuery.prop( this, "elements" ); |
86 |
return elements ? jQuery.makeArray( elements ) : this; |
87 |
}) |
88 |
.filter(function() {
|
89 |
var type = this.type; |
90 |
// Use .is(":disabled") so that fieldset[disabled] works
|
91 |
return this.name && !jQuery( this ).is( ":disabled" ) && |
92 |
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
|
93 |
( this.checked || !rcheckableType.test( type ) );
|
94 |
}) |
95 |
.map(function( i, elem ) {
|
96 |
var val = jQuery( this ).val(); |
97 |
|
98 |
return val == null ? |
99 |
null :
|
100 |
jQuery.isArray( val ) ? |
101 |
jQuery.map( val, function( val ) {
|
102 |
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; |
103 |
}) : |
104 |
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; |
105 |
}).get(); |
106 |
} |
107 |
}); |
108 |
|
109 |
return jQuery;
|
110 |
}); |