#java #jquery #spring-mvc #jsp #radio-button
#java #jquery #spring-mvc #jsp #переключатель
Вопрос:
Я пытался динамически добавлять дополнительные поля в форму. Однако, как и ожидалось, создаются только текстовые / числовые поля. Переключатели были созданы, но список выбора является общим для всех объектов. Также обратите внимание, что я закрываю ФОРМУ после закрытия скрипта, иначе при вводе ФОРМЫ path будет выдана ошибка. Есть идеи, чего мне не хватает? Заранее благодарю вас.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-lg-5 p-1">
<form:form method="POST" modelAttribute="investmentForm" class="p-4">
<div class="row">
<div class="col-lg-12">
<div id="inputFormRow">
<div class="form-group">
<label><h5><b>Invoice ID</b></h5></label>
<form:input path="invoiceNumber" name="invoiceNumber[]" class="form-control m-input" placeholder="E001-1234" required="required" />
</div>
<div class="form-group">
<label><h5><b>Amount</b></h5></label>
<form:input path="amountForm" name="amount[]" type="number" class="form-control m-input" step=".01" required="required" min="1" max="10000"/>
</div>
<label><h5><b>Currency</b></h5></label>
<div class="form-check form-check-inline">
<label class="form-check-label">
<form:radiobuttons class="form-check-input" path="currency" items="${curr}"/>
</label>
</div>
</div>
<div id="newRow"></div>
<button id="addRow" type="button" class="btn btn-info">Add Row</button>
</div>
</div>
<button type="submit" class="btn mt-4 btn-block p-2 btn-success shadowed">Invest!</button>
<script type="text/javascript">
// add row
var counter = 1;
$("#addRow").click(function () {
counter = 1;
var html ='<div id="inputFormRow">'
'<div class="form-group">'
'<label><h5><b>Invoice ID</b></h5></label>'
'<form:input path="invoiceNumber" name="invoiceNumber[]" class="form-control m-input" placeholder="E001-1234" required="required" />'
'</div>'
'<div class="form-group">'
'<label><h5><b>Amount</b></h5></label>'
'<form:input path="amountForm" name="amount[]" type="number" class="form-control m-input" step=".01" required="required" min="1" max="10000"/>'
'</div>'
'<div class="form-group">'
'<label><h5><b>Currency</b></h5></label>'
'<div class="form-check form-check-inline">'
'<label class="form-check-label">'
'<form:radiobuttons class="form-check-input" path="currency" items="${curr}"/>'
'</label>'
'</div>'
'<div class="input-group-append">'
'<button id="removeRow" type="button" class="btn btn-danger">Remove</button>'
'</div>'
'</div>'
$('#newRow').append(html);
});
// remove row
$(document).on('click', '#removeRow', function () {
$(this).closest('#inputFormRow').remove();
});
</script>
</form:form>
Комментарии:
1. Это происходит потому, что имя переключателя остается тем же, когда вы добавляете новую строку i,.e:
currency
вам нужно присвоить переключателю другое имя. Чтобы он отличался от других переключателей.