CakePHP:根据需要为表添加新行

时间:2012-01-15 03:00:41

标签: php javascript jquery cakephp-1.3

我需要创建收据。 用户可以创建由不同数量的成分组成的新产品。

我使用表格来布局输入,并且在每一行上都有一个使用以下代码生成的现有成分的选择列表:

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

生成以下html

<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;
    });

我不确定这是否是实现此目的的最佳方式。任何帮助或建议将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

  

当用户点击添加新行按钮时,我正在使用jQuery添加新行,但我不知道如何更改每个字段的名称值

克隆元素时,可以在插入之前(或之后)修改它:

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

如果您发布更多细节,例如,在更改之前显示html,然后是您希望新html看起来像什么的示例,那么我可以提供更详细的建议。

P.S。你在谈论“收据”还是“食谱”?

答案 1 :(得分:0)

试试这个,

首先使用

计算html中选择框的数量
var count = $('select').size();

然后, 根据需要添加selectbox 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>');