jQuery: serializzare un form come oggetto JSON specificando il tipo di dati

In jQuery possiamo serializzare un form come oggetto JSON specificando il tipo di dati.

jQuery di Gabriele Romanato

In jQuery possiamo serializzare un form come oggetto JSON specificando il tipo di dati.

La soluzione è la seguente:


"use strict";

$.jsonSerialize = function( form ) {
    var obj = {};
  
    form.find( "input, select, textarea" ).each(function() {
        var $input = $( this );
        var name = $input.attr( "name" );
        var value = $input.val();
        var v;

        if( $input.hasClass( "serialize-array" ) ) {
            if( value.indexOf( "," ) !== -1 ) {
                v = value.split( "," );
            } else {
                v = ( value.length > 0 ) ? [value] : [];
            }
        } else {
            v = value;
        }

        if( $input.hasClass( "serialize-number" ) ) {
            v = parseInt( value, 10 );
        }

        if( $input.hasClass( "serialize-date" ) ) {
            var elDate = Date.parse( value );
            if( !isNaN( elDate ) ) {
                v = new Date( elDate );
            } else {
                v = new Date();
            }
        }

        if( typeof name !== "undefined"  ) {
          
           obj[name] = v;
          
        }
     });

     return obj;
};     

Gli elementi del form possono avere le seguenti classi:

Classe Tipo di dati
serialize-array Array
serialize-number Number
serialize-date Date

Quando si specifica una di queste classi su un elemento, il suo valore verrà convertito nel valore di riferimento.

Commenti