I'm currently working on some forms for a CRUD. In one of my forms, I have to be able to add components dynamically, so I created an "add more" button, which generates 2 fields extra, one where a dropdown menu should appear with all the items from my DB, and another with an input field.
The input field ("Amount") is working fine, but I couldn't manage to integrate the data from the DB into the Jquery script to generate the extra fields when I add the values from the DB, then the "Add more" button doesn't work. The value of the second dropdown ("Tube") was hardcoded just to test the layout. Any idea of how can solve this?
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td>
<select class="form-control" name="ProductGroup" id='Product__field'>
<?php
$sql = DB::connection('log_inv')->table('logisticsinv')->select('id', 'Product_Name')->get();
foreach ($sql as $row) {
echo "<option value='".$row->id."'>" . $row->Product_Name. "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td><input type="text" name="Amount[]" placeholder="Amount" class="form-control" /></td>
<td><button type="button" name="add" id="add" class="btn btn-success btn_add">Add More</button></td>
</tr>
and this is my jquery code so that each time I press Add more a new Dropdown Menu and an input field are generated
<script type="text/javascript">
$(document).ready(function() {
var postURL = "<?php echo url('addmore'); ?>";
var i = 1;
var array = {{ json_encode(DB::connection('log_inv')->table('logisticsinv')->select('id', 'Product_Name')->get()) }};
$('#add').on('click', '.btn_add', function() {
i++;
$('#dynamic_field').append('<tr id="row' + i + '" class="dynamic-added"><td><select id="select_'+i+'"class="form-control" name="Item[]"></select><tr id="row' + i +
'" class="dynamic-added"></td><td><input type="text" name="Amount[]" placeholder="Amount" class="form-control" /></td><td><button type="button" name="remove" id="' + i + '" class="btn btn-danger btn_remove">X</button></td></tr>');
});
array.forEach(function(row){
$('#select_'+i).append('<option value="'+row["id"]+'" >'+row["Product_Name"]+'</option>');
});
$(document).on('click', '.btn_remove', function() {
var button_id = $(this).attr("id");
$('#row' + button_id + '').remove();
});
</script>
I get the Error: "Uncaught SyntaxError: Unexpected token &" on the line "var array = [{"id":24,"Product_Name":"B2C Kit"},{"id":25,"Product_Name":"B2B "},{"id":26,"Product_Name":"B2B Kit "},{"id":27,"Product_Name":"Swab"},{"id":28,"Product_Name":"Tube"}];"
Last Tried code:
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td>
<select class="form-control" name="ProductGroup" id='Product__field'>
<?php
$sql = DB::connection('log_inv')->table('logisticsinv')->select('id', 'Product_Name')->get();
foreach ($sql as $row) {
echo "<option value='".$row->id."'>" . $row->Product_Name. "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td><input type="text" name="Amount[]" placeholder="Amount" class="form-control" /></td>
<td><button type="button" name="add" id="add" class="btn btn-success btn_add">Add More</button></td>
</tr>
</table>
<div class="row">
<div class="col-md-12"></div>
<div class="form-group col-md-12">
<button type="submit" class="btn btn-success" style="margin-left:38px">Add Kit type</button>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
var postURL = "<?php echo url('addmore'); ?>";
var i = 1;
var array = [<?php DB::connection('log_inv')->table('logisticsinv')->select('id', 'Product_Name')->get() ?>];
array.forEach(function(row){
$('#select_'+i).append('<option value="'+row["id"]+'" >'+row["Product_Name"]+'</option>');
});
$('#add').on('click', function() {
i++;
$('#dynamic_field').append('<tr id="row' + i + '" class="dynamic-added"><td><select id="select_' + i + '"class="form-control" name="Item[]"></select><tr id="row' + i +
'" class="dynamic-added"></td><td><input type="text" name="Amount[]" placeholder="Amount" class="form-control" /></td><td><button type="button" name="remove" id="' + i + '" class="btn btn-danger btn_remove">X</button></td></tr>');
});
});
$(document).on('click', '.btn_remove', function() {
var button_id = $(this).attr("id");
$('#row' + button_id + '').remove();
});
</script>
