Mercurial > nebulaweb3
comparison default/node_modules/jquery/src/serialize.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1d038bc9b3d2 |
---|---|
1 define( [ | |
2 "./core", | |
3 "./core/toType", | |
4 "./manipulation/var/rcheckableType", | |
5 "./var/isFunction", | |
6 "./core/init", | |
7 "./traversing", // filter | |
8 "./attributes/prop" | |
9 ], function( jQuery, toType, rcheckableType, isFunction ) { | |
10 | |
11 "use strict"; | |
12 | |
13 var | |
14 rbracket = /\[\]$/, | |
15 rCRLF = /\r?\n/g, | |
16 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, | |
17 rsubmittable = /^(?:input|select|textarea|keygen)/i; | |
18 | |
19 function buildParams( prefix, obj, traditional, add ) { | |
20 var name; | |
21 | |
22 if ( Array.isArray( obj ) ) { | |
23 | |
24 // Serialize array item. | |
25 jQuery.each( obj, function( i, v ) { | |
26 if ( traditional || rbracket.test( prefix ) ) { | |
27 | |
28 // Treat each array item as a scalar. | |
29 add( prefix, v ); | |
30 | |
31 } else { | |
32 | |
33 // Item is non-scalar (array or object), encode its numeric index. | |
34 buildParams( | |
35 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", | |
36 v, | |
37 traditional, | |
38 add | |
39 ); | |
40 } | |
41 } ); | |
42 | |
43 } else if ( !traditional && toType( obj ) === "object" ) { | |
44 | |
45 // Serialize object item. | |
46 for ( name in obj ) { | |
47 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); | |
48 } | |
49 | |
50 } else { | |
51 | |
52 // Serialize scalar item. | |
53 add( prefix, obj ); | |
54 } | |
55 } | |
56 | |
57 // Serialize an array of form elements or a set of | |
58 // key/values into a query string | |
59 jQuery.param = function( a, traditional ) { | |
60 var prefix, | |
61 s = [], | |
62 add = function( key, valueOrFunction ) { | |
63 | |
64 // If value is a function, invoke it and use its return value | |
65 var value = isFunction( valueOrFunction ) ? | |
66 valueOrFunction() : | |
67 valueOrFunction; | |
68 | |
69 s[ s.length ] = encodeURIComponent( key ) + "=" + | |
70 encodeURIComponent( value == null ? "" : value ); | |
71 }; | |
72 | |
73 // If an array was passed in, assume that it is an array of form elements. | |
74 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { | |
75 | |
76 // Serialize the form elements | |
77 jQuery.each( a, function() { | |
78 add( this.name, this.value ); | |
79 } ); | |
80 | |
81 } else { | |
82 | |
83 // If traditional, encode the "old" way (the way 1.3.2 or older | |
84 // did it), otherwise encode params recursively. | |
85 for ( prefix in a ) { | |
86 buildParams( prefix, a[ prefix ], traditional, add ); | |
87 } | |
88 } | |
89 | |
90 // Return the resulting serialization | |
91 return s.join( "&" ); | |
92 }; | |
93 | |
94 jQuery.fn.extend( { | |
95 serialize: function() { | |
96 return jQuery.param( this.serializeArray() ); | |
97 }, | |
98 serializeArray: function() { | |
99 return this.map( function() { | |
100 | |
101 // Can add propHook for "elements" to filter or add form elements | |
102 var elements = jQuery.prop( this, "elements" ); | |
103 return elements ? jQuery.makeArray( elements ) : this; | |
104 } ) | |
105 .filter( function() { | |
106 var type = this.type; | |
107 | |
108 // Use .is( ":disabled" ) so that fieldset[disabled] works | |
109 return this.name && !jQuery( this ).is( ":disabled" ) && | |
110 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && | |
111 ( this.checked || !rcheckableType.test( type ) ); | |
112 } ) | |
113 .map( function( i, elem ) { | |
114 var val = jQuery( this ).val(); | |
115 | |
116 if ( val == null ) { | |
117 return null; | |
118 } | |
119 | |
120 if ( Array.isArray( val ) ) { | |
121 return jQuery.map( val, function( val ) { | |
122 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; | |
123 } ); | |
124 } | |
125 | |
126 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; | |
127 } ).get(); | |
128 } | |
129 } ); | |
130 | |
131 return jQuery; | |
132 } ); |