我正在使用Symfony2中的嵌入表单。我的主要表单名为“ inmovilizado_form ”,集合为“ inmovilizado_concepto_form ”。它工作正常,但我有一个jquery的问题,当我点击“Añadirconcepto”它添加2行inmovilizado_concepto_form而不是一个,因为它应该是。我从官方文档中获取代码后无法猜出问题出在哪里。您可以在下面看到显示2“conceptos”的图像。
这是我的代码:
TWIG:
<div class="form">
{{ form_start(inmovilizado_form) }}
<div class="input-box">
{{ form_row(inmovilizado_form.proveedor) }}
</div>
<div class="input-box">
{{ form_row(inmovilizado_form.anos) }}
</div>
<div class="input-box">
{{ form_row(inmovilizado_form.fecha) }}
</div>
<div class="title">
Conceptos
</div>
<div class="conceptos" data-prototype="{{ form_widget(inmovilizado_form.conceptos.vars.prototype)|e }}">
{% for concepto in inmovilizado_form.conceptos %}
{{ form_row(concepto.nombre) }}
{{ form_row(concepto.base) }}
{{ form_row(concepto.cantidad) }}
{{ form_row(concepto.iva) }}
{% endfor %}
</div>
{% block javascripts %}
{{ parent() }}
<script>
var $collectionHolder;
var $addTagLink = $('<a href="#" class="add_concepto_link">Añadir concepto</a>');
var $newLinkLi = $('<div class="add_concepto"></div>').append($addTagLink);
</script>
{% endblock %}
{{ form_row(inmovilizado_form.submit) }}
{{ form_row(inmovilizado_form.cancel) }}
{{ form_end(inmovilizado_form) }}
</div>
JQUERY(1.9.1)
$(document).ready(function(){
$collectionHolder = $('div.conceptos');
$collectionHolder.append($newLinkLi);
$collectionHolder.find('.item').each(function() {
addTagFormDeleteLink($(this));
});
$collectionHolder.data('index', $collectionHolder.find(':input').length);
$addTagLink.on('click', function(e) {
e.preventDefault();
addTagForm($collectionHolder, $newLinkLi);
});
});
function addTagForm($collectionHolder, $newLinkLi) {
var prototype = $collectionHolder.data('prototype');
var index = $collectionHolder.data('index');
var newForm = prototype.replace(/__name__/g, index);
$collectionHolder.data('index', index + 1);
var $newFormLi = $('<div class="item"></div>').append(newForm);
$newLinkLi.before($newFormLi);
addTagFormDeleteLink($newFormLi);
}
function addTagFormDeleteLink($tagFormLi) {
var $removeFormA = $('<a href="#">Eliminar concepto</a>');
$tagFormLi.append($removeFormA);
$removeFormA.on('click', function(e) {
e.preventDefault();
$tagFormLi.remove();
});
}
提前致谢!这让我发疯了!