2011-12-16 9 views

risposta

10

È possibile utilizzare serialize per serializzare gli elementi del modulo in una stringa per la registrazione. Segue le stesse regole per includere o non includere elementi come normale invio di moduli. L'unica avvertenza è che il contenuto dei campi input type="file" non è serializzato, per ragioni forse ovvie.

di sparare quando uno degli ingressi cambia:

$("form :input").change(function() { 
    console.log($(this).closest('form').serialize()); 
}); 

Live demo utilizzando il modulo indicato nella documentazione

+0

bello! come posso ottenere quello infornato su qualsiasi modifica di input (selezionare o testo)? –

+0

@ToniMichelCaubet: ho aggiornato la risposta per mostrare come. Ho appena usato l'evento 'change', che potrebbe non attivarsi abbastanza presto per gli input di testo. Se è così, basta lanciare anche alcuni eventi di tastiera. Ciò non sarà completo (non rileverebbe il clic con il tasto destro e quindi scegliere Incolla dal menu), ma suppongo che questo sia per il debug, quindi probabilmente è abbastanza buono. –

+0

Grazie mille che è molto utile –

1

Si può ottenere sotto forma di stringa di query utilizzando $("form").serialize().

1

Questo sarebbe il login forma ogni volta che qualcosa cambia:

$("form :input").change(function(){ 
    console.log($("form").serialize()); 
}); 

Edit:

Rimosso il mio suggerimento focusOut, quando mi resi conto che il cambiamento è in realtà sparato solo quando l'elemento perde il focus.

+0

Manca caselle di selezione. –

+0

@ T.J.Crowder buona cattura, aggiornata la mia risposta per ottenere la selezione, e textarea pure. –

1

Ho fatto questo piccolo componente:

$("form :input").change(function() { 
    var fields = $(this).closest('form').serialize(); 
    serialize_to_console(fields); 
}); 


/* 
    SERIALIZE TO CONSOLE 
    Transforms string to array and show each param in console if not empty */ 
var serialize_to_console = function(serialized) { 

    var splited_serialized = serialized.split('&'); 

    $.each(splited_serialized, function(index, key) { 

     var input = key.substr(0, key.indexOf('=')); 
     var value = key.substr(key.indexOf('=') + 1); 

     if(value !== '') 
     console.log('[' + input + '] = \'' + value + '\''); 
    }); 

} 

Enjoy!

Problemi correlati