2011-12-03 15 views

risposta

1
var values = inputs.map(function() { 
          var obj = {}; 
          obj[ this.id ] = $(this).val(); 
          return obj; 
         }).get(); 

Se non si tratta di input select o radio, utilizzare this.value anziché $(this).val().

Oppure se si desidera un oggetto, utilizzare .each.

var obj = {}; 
inputs.each(function() { 
          obj[ this.id ] = $(this).val(); 
         }); 

Se si voleva un array di oggetti, e se i vostri ingressi hanno le loro proprietà name, si potrebbe anche usare serializeArray.

var values = inputs.serializeArray(); 
+1

Questo creerà un array di oggetti. Presumo che voglia solo ottenere un oggetto. –

+0

@FelixKling: Penso che tu abbia ragione. Aggiornerò a meno che qualcun altro non mi picchi. ;) – RightSaidFred

+0

@RightSaidFred: Ya, Felix ha ragione, voglio un oggetto, non una matrice di oggetti. – Homam

5

.map() restituisce un array, quindi se si vuole un oggetto con valori ID come le chiavi, allora si può fare in questo modo:

function getFieldValues() { 
    var values = {}; 
    $("[id^='field']").each(function() { 
     values[this.id] = this.value; 
    }); 
    return(values); 
} 
+1

Curioso di sapere perché stai usando 'return (values)'. Lo fa sembrare una funzione. – RightSaidFred

+2

La sintassi del ritorno è una scelta personale in quanto entrambi sono legali (con o senza parens). Ci sono alcune circostanze (quando si ha una dichiarazione più complessa che si sta restituendo) che i parenti sono necessari per il corretto funzionamento, quindi ho solo scelto di usarli sempre. – jfriend00

+0

Vedo. Il lato negativo che vedo è che quel tipo di sintassi può confondere i principianti. Un punto di confusione comune è 'typeof x' vs' typeof (x) '. – RightSaidFred

Problemi correlati