2016-08-24 2 views
1

Как я могу увеличить массив внутри html name = "", который помещается внутри jQuery .after()?Как увеличить имя ввода html

Как это

$(document).ready(function() { 
    $('#add_products').click(function() { 
     $('.products_tr:last').after('<tr class="products_tr"><td><input id="quantity" class="form-control" type="text" value="" name="invoice[products_attributes][1][quantity]"></td></tr>'); 
    }); 
    }); 

Это, как предполагается, чтобы добавить дополнительные строки в счете-фактуре, и его работы, но для того, чтобы сохранить его правильно в базе данных «[1]» внутри name="invoice[products_attributes][1][quantity] потребности, чтобы увеличить. И он должен увеличиваться в зависимости от последнего значения.

Этот код динамически создается Ruby On Rails.

Кто-нибудь знает способ сделать это? Помощь будет оценена!

+0

'» ... имя = "счет-фактура [products_attributes] [„+ значение +“.. .'' – Liam

ответ

3

Получить общее число строк (как индекс начинается с 0 поэтому нет необходимости добавлять 1) к нему, так что вы получите новый индекс для вновь создаваемого строки и использовать class="quantity" в id должно быть уникальным,

$(document).ready(function() { 
    $('#add_products').click(function() { 
     l=$('.products_tr').length;// to get total 
     $('.products_tr:last').after('<tr class="products_tr"><td><input '+ 
      ' class="quantity" class="form-control" type="text" value="" '+ 
      ' name="invoice[products_attributes]['+l+'][quantity]"></td></tr>'); 
    }); 
}); 

Как @Pete прокомментировал, и если у вас есть кнопка удалить, а затем использовать глобальную переменную и увеличиваем его любят,

$(document).ready(function() { 
    var counter = $('.products_tr').length; // initially it is equal to length of all rows, let it start from 0 
    $('#add_products').click(function() { 
     $('.products_tr:last').after('<tr class="products_tr"><td><input '+ 
      ' class="quantity" class="form-control" type="text" value="" '+ 
      ' name="invoice[products_attributes]['+counter+'][quantity]"></td></tr>'); 
     counter++; 
    }); 
}); 
+0

Простой и понятный, отлично работает. Спасибо! – luissimo

+1

o nly проблема будет, если есть кнопка удаления строки тоже – Pete

+0

На самом деле после повторного попытки она не работает, потому что она не проходит [1]. когда я добавляю третью строку, она остается на [1]. – luissimo

Смежные вопросы