2010-12-13 6 views
1

私は、画面に請求書のリストを表示しています。現在、ユーザは、チェックボックスを使用して請求書を選択または選択解除するか、支払いを希望する金額を変更することができます。この場合、すべての請求書に支払われる総額が合計され表示されます。jquery内のjsonコレクションを変更する

最終的な目標は、サーバーからのデータの配列を追跡することです。 jsonが標準化されているので、私はjsonを使用しています。

その後、私はそうのようなJSONデータを非表示になっています:今

<input id="InvoicingGridRows" name="InvoicingGridRows" type="hidden" 
value="[[{&quot;Value&quot;:&quot;TST-1000&quot;},{&quot;Value&quot;:346.230000}, 
{&quot;Value&quot;:null},{&quot;Value&quot;:null},{&quot;Value&quot;:null}, 
{&quot;Value&quot;:null}], 
[{&quot;Value&quot;:&quot;TST-1001&quot;}, 
{&quot;Value&quot;:126.970000},{&quot;Value&quot;:null},{&quot;Value&quot;:null}, 
{&quot;Value&quot;:null},{&quot;Value&quot;:null}]]" /> 

、データはデータ用の空のプレースホルダをたくさん持っています。

私がしようとしているのは、イベントが発生して合計が発生すると、ターゲットの編集/削除/追加を開始できるように、javascriptオブジェクトを作成することです。ここまで私がこれまで持っていたもの。

var invoiceRows = function() { 
    var targetControl = ''; 

    var getByInvoiceId = function (invoiceId) { 
     var data = $(targetControl.val()); 

     for (var x = 0; x < data.length; x++) { 
      if (data[x][0].Value == invoiceId) 
       return data[x]; 
     } 

     return null; 
    }; 

    return { 

     init: function (selector, invoices) { 
      targetControl = $(selector); 

      //set up the gridrows to defaulted values 
      targetControl.val(invoices); 
     }, 

     save: function (invoiceId, amount) { 
      var invoiceData = getByInvoiceId(invoiceId); 

      if (invoiceData) { 
       //update 
      } else { 
       //add new 
      } 
     }, 

     remove: function (invoiceId) { 
      //remove row with invoiceid 
     } 

    } 

}(); 

私の質問は、私は簡単に変更はどうすればよいです/行を削除するだけでなく、私のJSONオブジェクトに新しい行を追加し、隠しフィールドに戻ってそれを保存しますか?それは可能なのでしょうか、それとも良い方法がありますか?私は提案に開放されています。

答えて

1

あなたはevalを使用してJavaScriptのオブジェクトに隠された入力に文字列を変換することができます

var dataObj = eval($("#InvoicingGridRows").val()); 

私は一度だけこれを行うには、そのようなこのオブジェクトの削除など、すべての操作を行うと思います。サーバーに戻ってそれを送信する準備ができたら、バックオブジェクトを文字列に変換します。

var dataStr = JSON.stringify(dataObj); 
$("#InvoicingGridRows").val(dataStr); 

を別の方法として、あなたはデータを含む<script>タグを作成するには、サーバを、サーバーがどのように動作するか、変更得ることができる場合javascriptオブジェクトとして使用する準備ができています - 基本的に隠れた入力の文字列ですが、全体を囲む引用符やその前に変数の代入がありません。例えば。サーバを出力させてください。今必要はありません。

関連する問題