Когда нажимается кнопка редактирования или удаления строки, я хочу сохранить идентификатор учащегося вместе с проверенным типом, т. е. типом редактирования или удаления, а затем использовать его для обновления данных в базе данных. В настоящее время я написал html и jquery, чтобы установить флажок при нажатии соответствующей кнопки. Теперь я застрял в том, как хранить данные в массиве и передавать их вперед. Данные должны быть в виде stdList(id = 1, check = 'edit').
Вот мой html
<div class="alert alert-danger" role="alert"></div>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Checklist</th>
<th>Id</th>
<th>Student Name</th>
<th>Address</th>
<th>Phone</th>
<th>Class</th>
<th colspan="2">Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" id="editCheck" class="editCheck" />
<input type="checkbox" id="deleteCheck" class="deleteCheck" />
</td>
<td>1</td>
<td>
<input type="text" class="form-control item" readonly="readonly" />
</td>
<td>
<input type="text" class="form-control item" readonly="readonly" />
</td>
<td>
<input type="text" class="form-control item" readonly="readonly" />
</td>
<td>12</td>
<td>
<button type="button" class="btn btn-info btn-xs" id="btn1">Edit</button>
</td>
<td>
<button type="button" class="btn btn-danger btn-xs" id="dbtn1">Delete</button>
</td>
</tr>
<tr>
<td>
<input type="checkbox" id="editCheck" class="btn2" />
<input type="checkbox" id="deleteCheck" />
</td>
<td>1</td>
<td>
<input type="text" class="form-control item" readonly="readonly" />
</td>
<td>
<input type="text" class="form-control item" readonly="readonly" />
</td>
<td>
<input type="text" class="form-control item" readonly="readonly" />
</td>
<td>12</td>
<td>
<button type="button" class="btn btn-info btn-xs" id="btn2">Edit</button>
</td>
<td>
<button type="button" class="btn btn-danger btn-xs" id="dbtn2">Delete</button>
</td>
</tr>
</tbody>
Вот jquery
$('.btn.btn-info.btn-xs').click(function () {
var $tr = $(this).closest('tr')
$tr.find('input:checkbox').first().prop('checked', 'true');
$tr.find('input').removeAttr('readonly');
check($tr);
});
$('.btn.btn-danger.btn-xs').click(function () {
var $tr = $(this).closest('tr');
$tr.find('input:checkbox').last().prop('checked', 'true');
check($tr);
});
function check($tr) {
if (($tr.find('input:checkbox').first().is(":checked")) && ($tr.find('input:checkbox').last().is(":checked"))) {
$('.alert.alert-danger').append('<p>You can not edit and update the field at once</p>');
}
}
2 ответа
Из упомянутой проблемы вам необходимо сохранить данные ученика и вызванное действие. Таким образом, описанный ниже подход можно использовать для того же.
Create a object like below . var item=new Object(); item.studentId = "student id"; item.Action="edit/delete action" Create an array to save this var studentInfo = new Array(); then Add items to array, studentInfo.push(item); Use the Array as required in you code
Сначала вы можете установить идентификатор в атрибуте данных элемента tr
строки таблицы. Также добавьте значение в флажки, которые можно использовать в массиве/объекте.
<tr data-id="1">
<td>
<input type="checkbox" id="editCheck" class="editCheck" value="edit" />
<input type="checkbox" id="deleteCheck" class="deleteCheck" value="delete" />
...
Я немного упростил функцию check
, подсчитав отмеченные флажки (с помощью length
). Со значением и атрибутом данных легко создать объект JSON, который, в отличие от массивов, имеет пары ключ-значение.
function check($tr) {
var $checked = $tr.find('input:checked');
var data = {};
if ($checked.length > 1) {
$('.alert.alert-danger').append('<p>You can not edit and update the field at once</p>');
return false;
}
data.id = $tr.data('id');
data.check = $checked.val();
console.log(data); // Gives something like {id: 1, check: 'edit'}
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.