Projet

Général

Profil

Paste
Télécharger (3,14 ko) Statistiques
| Branche: | Révision:

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
});