fix: admin.php modal重复叠加导致ugNewMember获取失败 + 异步验证pending处理
- admin.php showModal: 新增[data-modal-overlay]清理逻辑防止多次打开modal导致元素复用 - doAddGroupMember: 固定player名正则3-16位, 改善错误提示文案, 处理pending响应 - admin.php modal: 移除旧的querySelectorByStyle选择器改为data属性
This commit is contained in:
@@ -1745,7 +1745,10 @@ async function doLogout() {
|
|||||||
// ===== 模态框输入(替代prompt)=====
|
// ===== 模态框输入(替代prompt)=====
|
||||||
function showModal(title, message, defaultValue, customHtml) {
|
function showModal(title, message, defaultValue, customHtml) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
|
// ★ 移除所有旧的modal overlay,防止重复id导致输入框读取失败
|
||||||
|
document.querySelectorAll('[data-modal-overlay]').forEach(el => el.remove());
|
||||||
const overlay = document.createElement('div');
|
const overlay = document.createElement('div');
|
||||||
|
overlay.dataset.modalOverlay = '1';
|
||||||
overlay.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.6);display:flex;justify-content:center;align-items:center;z-index:1000';
|
overlay.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.6);display:flex;justify-content:center;align-items:center;z-index:1000';
|
||||||
if (customHtml) {
|
if (customHtml) {
|
||||||
overlay.innerHTML = `
|
overlay.innerHTML = `
|
||||||
@@ -2776,16 +2779,23 @@ async function showGroupMembers(groupName) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function doAddGroupMember(groupName) {
|
async function doAddGroupMember(groupName) {
|
||||||
const player = document.getElementById('ugNewMember')?.value?.trim();
|
const inputEl = document.getElementById('ugNewMember');
|
||||||
|
const player = inputEl ? inputEl.value.trim() : '';
|
||||||
if (!player) { glassAlert('请输入玩家名'); return; }
|
if (!player) { glassAlert('请输入玩家名'); return; }
|
||||||
if (!/^[a-zA-Z0-9_]{2,16}$/.test(player)) { glassAlert('玩家名格式无效'); return; }
|
if (!/^[a-zA-Z0-9_]{3,16}$/.test(player)) { glassAlert('玩家名格式不正确,仅支持英文字母、数字和下划线(3-16位)'); return; }
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await apiCall('add_group_member', {group: groupName, player}, 'POST');
|
const res = await apiCall('add_group_member', {group: groupName, player}, 'POST');
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
showGroupMembers(groupName); // 刷新
|
// pending=true 是异步验证响应,需要特殊处理
|
||||||
|
if (res.pending) {
|
||||||
|
glassAlert(res.message || '验证请求已提交,系统将在1-2分钟内自动完成验证');
|
||||||
|
showGroupMembers(groupName); // 刷新
|
||||||
|
} else {
|
||||||
|
showGroupMembers(groupName); // 刷新
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
glassAlert('添加失败: ' + (res.error || ''));
|
glassAlert(res.error || '添加失败');
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
glassAlert('添加失败: ' + e.message);
|
glassAlert('添加失败: ' + e.message);
|
||||||
|
|||||||
Reference in New Issue
Block a user