尝试使用编辑和删除创建简单的操作。当前具有编辑功能。
功能如下:
1)用户单击编辑图标,引导程序模版将打开,其中包含从包含用户ID的ajax请求中获取的表单信息。表单值字段会根据获取的Ajax请求自动填充。
2)用户可以编辑自动填充的表单字段,以编辑用户信息,然后发出单独的ajax请求来编辑用户记录。
问题:
这一切都按我想要的方式工作,但是我注意到一个小错误,当我去编辑用户信息,单击发送然后关闭模式以打开和编辑另一个用户信息并单击时,我卡在了一个小错误上再发送一次,以前的表单数据将添加到我当前正在编辑的数据上,但我不希望这样做。我只想打开模式并编辑并发送当前用户的数据。
此外,我还注意到,如果我继续尝试编辑多个用户信息,则每次尝试编辑另一个记录时都会发送多个ajax请求。我尝试查找问题,但我认为这是由于事件冒泡,我尝试了e.stopPropagation;
和return false;
而无济于事。我觉得我已经接近了,但是我想念一些东西。
如果您还需要我的HTML代码,我会很乐意显示。
这是我的代码:
$(document).on('click', 'i.fas.fa-edit', function(userId){
emailField.value = 'Please wait...!';
fullnameField.value = 'Please wait...!';
areaField.value = 'Please wait...!';
personField.value = 'Please wait...!';
// By Default
adminAccess.checked = false;
personField.style.display = 'block';
adminAccess.addEventListener('click', function(){
if(adminAccess.checked == true) {
areaField.style.display = "none";
} else {
personField.style.display = "block";
}
});
var usersId = {
usersId: userId.target.id
}
// Select user data
$.ajax({
method: 'POST',
url: 'select-user-action.php',
data: usersId,
success: function(data){
var parseData = JSON.parse(data);
parseData.forEach(function(element){
emailField.value = element.email;
fullnameField.value = element.name;
areaField.value = element.areaField;
personField.value = element.personField;
});
}
});
});
$('#editModal').on('show.bs.modal', function () {
submitForm.addEventListener('submit', function(e){
// prevent form from submitting
e.preventDefault();
var editData = {
"email": emailField.value,
"fullName": fullnameField.value,
"areaField": areaField.value,
"personField": personField.value
};
// Previous data is being added onto current edited data.. This is what I'm stuck on.
console.log(editData);
// $.ajax({
// method: 'POST',
// url: 'edit-user-action.php',
// data: editData,
// success: function(data){
// console.log(data);
// }
// });
// this didnt work
return false;
});
});