2012-01-15 64 views
2

我需要創建收據。 用戶可以創建由多種配料組成的新產品。CakePHP:根據需要爲表添加新行

我使用的表格佈局的輸入,並在每一行有用下面的代碼生成的現有成分的選擇列表:其生成如下的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

這是收據(式)。我需要改變的是新添加的行的名稱值,例如name =「data [Receipt] [0] [ingredient_id]向上計數第二個索引 – dadi 2012-01-18 13:47:40

0

試試這個,在你的HTML選擇框使用

首先計算數量,

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

然後, 添加選擇框HTML按需要像,

$('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 2012-01-18 13:49:15