2012-01-15 14 views
2

領収書を作成する必要があります。 ユーザーは、さまざまな数の成分からなる新製品を作成することができます。CakePHP:必要に応じてテーブルの新しい行を追加します

Iは入力をレイアウトするテーブルを使用して、各行に次のコードで生成された既存の成分の選択リストがあるている:次のHTMLを生成

<?php echo $this->Form->input('Receipt.0.ingredient_id', array('label' => false,'div' => false, 'class' => '')); 

<select id="Receipt0IngredientId" class="" name="data[Receipt][0][ingredient_id]"> 
<option value="1">Ingredient B</option> 
<option value="3">Ingredient B</option> 
<option value="4">Ingredient B</option> 
</select> 

と、必要な成分の量を入力する別のフィールド。

<?php echo $this->Form->input('Receipt.0.amount', array('label' => false,'div' => false, 'class' => '')); ?> 

事は食材の種類は、製品によって異なりますと、現在、私は、ユーザーが新しい行のボタンを追加クリックしたときに新しい行を追加するためにはjQueryを使用していますが、私は名前の値を変更する方法を知りませんで各フィールド jQueryのコードの:

$("#addNewLine").click(function() { 
     $('#add_ingredient tbody>tr:last').clone(true).insertAfter('#add_ingredient tbody>tr:last'); 
     return false; 
    }); 

私は、これはこれを実装するための最良の方法であるかはわかりません。助けや助言をいただければ幸いです。

答えて

0

私は、ユーザーが新しい行のボタンを追加クリックしたときに新しい行を追加するためにはjQueryを使用していますが、私はあなたが変更することができる要素のクローンを作成する場合、各フィールド

の名前値を変更する方法を知りませんその前(または後)に挿入:

$('#add_ingredient tbody>tr:last').clone(true) 
            .attr("name", "new name here") 
            .insertAfter('#add_ingredient tbody>tr:last'); 

あなたには、いくつかの詳細、例えばを投稿する場合は、変更前のHTMLを表示し、あなたが新しいHTMLは、その後、私ができるようになりたいのですが何の例いくつかの詳細なアドバイスを提供します。

P.S. 「領収書」や「レシピ」について話していますか?

+0

を選択ボックスのHTMLを追加し、その後、

var count = $('select').size(); 

を使用して、HTML内のセレクトボックスの

まず計算回数、これを試してみてください式)。変更する必要があるのは、新しく追加された行の名前の値です。名前= "data [Receipt] [0] [ingredient_id]は2番目のインデックスをカウントアップします – dadi

0

が、それは領収書(だ、などの必要性につきとして

$('body').append('<select id="Receipt'+count+'IngredientId" class="" name="data[Receipt]['+count+'][ingredient_id]"> 
<option value="1">Ingredient B</option> 
<option value="3">Ingredient B</option> 
<option value="4">Ingredient B</option> 
</select>'); 
+0

すべてのオプションはデータベースから生成され、私はオプションを事前に認識していません。 – dadi

関連する問題