PageSourceSearch

https://authenticjobs.com/wp-content/plugins/wp-job-manager/assets…/jquery.deserialize.js?ver=1.2.1

js authenticjobs.com collected 2026-09-24 08:36:51 UTC 4,095 bytes, 142 lines download raw bytes

1/**
2 * @author Kyle Florence <kyle[dot]florence[at]gmail[dot]com>
3 * @website https://github.com/kflorence/jquery-deserialize/
4 * @version 1.2.1
5 *
6 * Dual licensed under the MIT and GPLv2 licenses.
7 */
8(function( jQuery, undefined ) {
9
10var push = Array.prototype.push,
11    rcheck = /^(?:radio|checkbox)$/i,
12    rplus = /\+/g,
13    rselect = /^(?:option|select-one|select-multiple)$/i,
14    rvalue = /^(?:button|color|date|datetime|datetime-local|email|hidden|month|number|password|range|reset|search|submit|tel|text|textarea|time|url|week)$/i;
15
16function getElements( elements ) {
17    return elements.map(function() {
18            return this.elements ? jQuery.makeArray( this.elements ) : this;
19        }).filter( ":input:not(:disabled)" ).get();
20}
21
22function getElementsByName( elements ) {
23    var current,
24        elementsByName = {};
25
26    jQuery.each( elements, function( i, element ) {
27        current = elementsByName[ element.name ];
28        elementsByName[ element.name ] = current === undefined ? element :
29            ( jQuery.isArray( current ) ? current.concat( element ) : [ current, element ] );
30    });
31
32    return elementsByName;
33}
34
35jQuery.fn.deserialize = function( data, options ) {
36    var i, length,
37        elements = getElements( this ),
38        normalized = [];
39
40    if ( !data || !elements.length ) {
41        return this;
42    }
43
44    if ( jQuery.isArray( data ) ) {
45        normalized = data;
46
47    } else if ( jQuery.isPlainObject( data ) ) {
48        var key, value;
49
50        for ( key in data ) {
51            jQuery.isArray( value = data[ key ] ) ?
52                push.apply( normalized, jQuery.map( value, function( v ) {
53                    return { name: key, value: v };
54                })) : push.call( normalized, { name: key, value: value } );
55        }
56
57    } else if ( typeof data === "string" ) {
58        var parts;
59
60        data = data.split( "&" );
61
62        for ( i = 0, length = data.length; i < length; i++ ) {
63            parts =  data[ i ].split( "=" );
64            push.call( normalized, {
65                name: decodeURIComponent( parts[ 0 ].replace( rplus, "%20" ) ),
66                value: decodeURIComponent( parts[ 1 ].replace( rplus, "%20" ) )
67            });
68        }
69    }
70
71    if ( !( length = normalized.length ) ) {
72        return this;
73    }
74
75    var current, element, j, len, name, property, type, value,
76        change = jQuery.noop,
77        complete = jQuery.noop,
78        names = {};
79
80    options = options || {};
81    elements = getElementsByName( elements );
82
83    // Backwards compatible with old arguments: data, callback
84    if ( jQuery.isFunction( options ) ) {
85        complete = options;
86
87    } else {
88        change = jQuery.isFunction( options.change ) ? options.change : change;
89        complete = jQuery.isFunction( options.complete ) ? options.complete : complete;
90    }
91
92    for ( i = 0; i < length; i++ ) {
93        current = normalized[ i ];
94
95        name = current.name;
96        value = current.value;
97
98        if ( !( element = elements[ name ] ) ) {
99            continue;
100        }
101
102        type = ( len = element.length ) ? element[ 0 ] : element;
103        type = ( type.type || type.nodeName ).toLowerCase();
104        property = null;
105
106        if ( rvalue.test( type ) ) {
107            if ( len ) {
108                j = names[ name ];
109                element = element[ names[ name ] = ( j == undefined ) ? 0 : ++j ];
110            }
111
112            change.call( element, ( element.value = value ) );
113
114        } else if ( rcheck.test( type ) ) {
115            property = "checked";
116
117        } else if ( rselect.test( type ) ) {
118            property = "selected";
119        }
120
121        if ( property ) {
122            if ( !len ) {
123                element = [ element ];
124                len = 1;
125            }
126
127            for ( j = 0; j < len; j++ ) {
128                current = element[ j ];
129
130                if ( current.value == value ) {
131                    change.call( current, ( current[ property ] = true ) && value );
132                }
133            }
134        }
135    }
136
137    complete.call( this );
138
139    return this;
140};
141
142})( jQuery );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.