CakePHP: добавьте новую строку для таблицы по мере необходимости - PullRequest
2 голосов
/ 15 января 2012

Мне нужно создать чек. Пользователь может создавать новый продукт, состоящий из различного количества ингредиентов.

Я использую таблицу для размещения входных данных, и в каждой строке есть список выбора существующего ингредиента, сгенерированного с помощью следующего кода:

<?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 голосов
/ 15 января 2012

Попробуйте,

Сначала вычислите количество полей выбора в вашем html, используя,

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

Затем, добавьте html selectbox в соответствии с необходимостью, например,

$('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 голосов
/ 15 января 2012

Я использую jQuery для добавления новых строк, когда пользователь нажимает кнопку Добавить новую строку, но я не знаю, как изменить значение имени каждого поля

Когда вы клонируете элементВы можете изменить его до (или после) вставки:

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

Если вы опубликуете более подробную информацию, например, покажите HTML-код до изменения, а затем пример того, что вы хотите, чтобы новый HTML-кодпохоже, тогда я мог бы предложить более подробный совет.

PS Вы говорите о "рецептах" или "рецептах"?

...