2011-12-03 54 views

回答

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

如果它們不是selectradio輸入,請使用this.value而不是$(this).val()

或者如果您只是想要一個物體,請使用.each

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

如果你確實想對象的數組,如果你輸入時,其name財產,你也可以使用serializeArray

var values = inputs.serializeArray(); 
+1

這將創建對象的數組。我假設他只想得到一個物體。 –

+0

@FelixKling:我認爲你是對的。我會更新,除非有人打我。 ;) – RightSaidFred

+0

@RightSaidFred:Ya,Felix是對的,我想要一個對象,而不是一個對象數組。 – Homam

5

.map()返回一個數組,所以如果你想用的ID值作爲鍵的對象,那麼你可以做這樣的:

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

很想知道你爲什麼使用'return(values)'。它使它看起來像一個功能。 – RightSaidFred

+2

返回語法是個人選擇,因爲兩者都是合法的(有或沒有參數)。在某些情況下(當你有更復雜的陳述時,你正在返回),需要正確操作的parens,所以我只是選擇總是使用它們。 – jfriend00

+0

我明白了。我看到的缺點是語法類型可能會混淆初學者。一個常見的混淆之處是'typeof x' vs'typeof(x)'。 – RightSaidFred

相關問題