Я хочу объединить поле выбора с информацией из выбранных строк в объекте datatables. Моя идея состояла в том, чтобы:
- Получить значение выбранной опции (item.id)
- получить серийные номера выбранных элементов в объекте datatables
- Создать массив, состоящий из item.id и серийных данных datatables [item.id, serial1, serial2 ...] (changevalues)
- изменяет значение параметра на объединенное значение с 3, чтобы оно передавалось при нажатии кнопки updateButton
Мне удалось с 1-3, но я допустил некоторую ошибку с 4. Хотя я могу записать вывод в консоль. У кого-нибудь есть идея для меня? Является ли это плохой идеей сделать это так вообще?
мой код выбора:
<div class="container">
<form action="/itemselect" method="post">
<div class="row">
<select class="selectpicker form-control" name="updates_list" id="itemSelector">
{% for item in items %}
<option value="{{ item.id }}">{{ item.name }}</option>
{% endfor %}
</select>
<button class="btn btn-default" name="submit" value="submit" id="updateButton" disabled > Submit</button>
</div>
</form>
</div>
мой ajax вызов для обновления таблиц данных:
$(document).ready(function() {
function getData() {
$.ajax({
url: "/refreshLiveTableRoute",
success: function (data) {
// Get Datatable API
var table = $('#live_table').DataTable();
// Get IDs of selected rows.
var selected = table.rows({selected: true}).ids().toArray();
// Add '#' to the IDs of each row
selected.forEach(function(part, index) {
this[index] = '#' + this[index];
}, selected);
// Clear table.
table.clear();
// Add new row data, draw and stay on same page.
table.rows.add(data).draw(false);
// Reselect rows based on ID.
table.rows( selected ).select();
// this is to give the selected rows to the update button
table.on( 'select', function () {
var rowData = table.rows( { selected: true } ).data();
var rowSerial = [];
$.each( rowData , function(i, item) {
rowSerial.push(item.serial);
});
var e = document.getElementById("itemSelector");
var selectoption = e.options[e.selectedIndex].value;
var changevalue = [selectoption,rowSerial]
// console.log(changevalue)
$("#itemSelector").change(function() {
$("#itemSelector option[value=selectoption]").val(changevalue); // <-- not working
} );
} );
});
}
});
}