Я относительный новичок в JS/Laravel. Я написал этот простой JS, чтобы добавить 2 поля по запросу на мою страницу Laravel Blade. Я хотел, чтобы оба окна ввода были встроенными, а не один поверх другого. Когда я написал JS вроде этого:Почему javascript визуализирует вещи
$(document).ready(function() {
var max_fields = 4; //maximum input boxes allowed
var wrapper = $(".input_fields_wrap"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x <= max_fields){ //max input box allowed
$(wrapper).append(" <div class='form-inline'> ");
$(wrapper).append(" <div class='form-group'> ");
$(wrapper).append(" <label for='products_id["+x+"]'>Product ID:</label> ");
$(wrapper).append(" <input type='text' class='form-control' style='margin-left:5px' name='products_id["+x+"]'> ");
$(wrapper).append(" </div>");
$(wrapper).append(" <div class='form-group'> ");
$(wrapper).append(" <label for='quantity["+x+"]' style='margin-left:10px'>Quantity:</label> ");
$(wrapper).append(" <input type='text' class='form-control' style='margin-left:5px' name='quantity["+x+"]'> ");
$(wrapper).append(" </div> ");
$(wrapper).append(" </div> ");
x++; //text box increment
}
});
});
Это не сработало - когда он преобразуется в HTML, то HTML делает такой:
<div class="input_fields_wrap">
<button class="btn btn-primary add_field_button" style="margin-bottom:5px">Add More Fields</button>
<div class="form-inline"> </div>
<div class="form-group"> </div>
<label for="products_id[1]">Product ID:</label>
<input type="text" class="form-control" style="margin-left:5px" name="products_id[1]">
<div class="form-group"> </div>
<label for="quantity[1]" style="margin-left:10px">Quantity:</label>
<input type="text"
class="form-control" style="margin-left:5px" name="quantity[1]"> </div>
АРЕ не находится там, где я хочу их идти вверх, прикручивать все CSS и не помещать текстовые поля в ряд, как я хотел.
Но, когда я делаю это:
$(add_button).click(function(e){
e.preventDefault();
if(x <= max_fields){ //max input box allowed
$(wrapper).append(" <div class='form-inline'> <div class='form-group'> <label for='products_id["+x+"]'>Product ID:</label> <input type='text' class='form-control' style='margin-left:5px' name='products_id["+x+"]'> </div> <div class='form-group'> <label for='quantity["+x+"]' style='margin-left:10px'>Quantity:</label><input type='text' class='form-control' style='margin-left:5px' name='quantity["+x+"]'> </div> </div>");
x++; //text box increment
}
});
});
Он работает.
<div class="input_fields_wrap">
<button class="btn btn-primary add_field_button" style="margin-bottom:5px">Add More Fields</button>
<div class="form-inline">
<div class="form-group">
<label for="products_id[1]">Product ID:</label>
<input type="text" class="form-control" style="margin-left:5px" name="products_id[1]">
</div>
<div class="form-group">
<label for="quantity[1]" style="margin-left:10px">Quantity:</label>
<input type="text" class="form-control" style="margin-left:5px" name="quantity[1]">
</div>
</div>
</div>
В чем разница? Что мне не хватает?
Благодарим вас за комментарии. Я строил фрагмент кода, который я нашел в Интернете, и не понимал, что делает .append. Теперь я делаю! Благодарю. – Zeke