2011-01-06 12 views
0

を助ける: alt textjQueryのマップ() ​​- 私はこのようになりますHTMLの表を持っている必要

ユーザーがテキストボックスのいずれかを更新し、ドロップダウンから選択することができます。
アクションを完了したら、データはajax経由でサーバーに送信する必要があります。
変更した値だけでなく、すべての値を送信することもできます。

ajaxトランザクション用のJSON文字列を作成するのに役立つ必要があります。
(説明欄には、文字列、テキストボックスやドロップダウンが同じオプションが含まれていないほかのドロップダウンのいずれかになりますので注意してください。)

構造を、私はこのようになりますにマップしようとしています:

[ 
    { id: "1" , desc: "Lenovo" , remark: "International" }, 
    { id: "2" , desc: "Hard Disks", remark: ""   }, 
    { id: "3" , desc: "T400", remark: "Old Model"  }, 
    { id: "4" , desc: "Poker", remark: ""    } 
] 

マップができない場合は、私は他のオプションを開いていただきありがとうございます。
機能と記述と非表示列があります:

ポスト受け入れノート;-)幸せになると人生を楽しみます。これが答えの指数が細胞[2]と細胞[5]を批判する理由です。

答えて

0

これはあなたのために行う必要があります。

これは行を選択し、最初の行を除いて.slice()をすべて取り、次に.map()を呼び出して配列を作成します。 .get()は実際にはArrayをjQueryオブジェクトから取り出します。

.map()の中に、私はDOM APIのプロパティとメソッドを使用しました。この場合は少しシンプルに(より速く)見えたからです。これに...

remark:this.cells[ 5 ].getElementsByTagName('input')[0].value 

:あなたが第6セル(発言)内部の空白がありません知っている場合

var ProductFeatures = $('#FeatureListTable tr').slice(1).map(function() { 
    return { 
     id: this.id, 
     desc:this.cells[ 2 ].innerHTML, 
     remark:this.cells[ 5 ].getElementsByTagName('input')[0].value 
    } 
}).get(); 

、あなたは、この行を変更することができ

remark:this.cells[ 5 ].firstChild.value 

編集:副次的なことは、HTMLを変更できる場合は、最初の行を01に要素、次に残りの行を<tbody>要素に入れて、表の異なる部分に分割します。

その後、あなたはこれを変更することができます:

$('#FeatureListTable tr').slice(1) 

...これに:

$('#FeatureListTable > tbody > tr') 

...あなたを必要とせずに、すべてのヘッダー行以外を選択する能力を与えて別の.slice()コールを呼び出して、セットからヘッダーを削除します。

+0

ありがとう、私はここから単独で続けることができ、列2がドロップダウン、テキストボックスまたは通常のテキストである場合を解決できると思います。私は本当にあなたの助けに感謝、幸せ、ジュリアン –

関連する問題