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.
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