2011-12-03 17 views

答えて

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

selectまたはradioの入力でない場合は、$(this).val()の代わりにthis.valueを使用してください。

オブジェクトを必要としている場合は、.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

リターン構文は個人的な選択です。どちらも合法です(括弧の有無にかかわらず)。いくつかの状況があります(あなたがより複雑なステートメントを返すとき)、正しい操作のために括弧が必要なので、私はいつもそれらを使用することを選択します。 – jfriend00

+0

私は参照してください。私が見ている欠点は、構文の種類が初心者を混乱させる可能性があることです。混乱の共通点は 'typeof x'と' typeof(x) 'です。 – RightSaidFred

関連する問題