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

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.

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.

Torna su