錯誤代碼
function checkDelForm() {
var uids = document.getElementsByName("delUids").length; // 錯誤:獲取元素總數
if (uids == -1) { ... } // 永遠不為 -1
}
正確邏輯
function checkDelForm() {
var checkboxes = document.getElementsByName("delUids");
var checked = false;
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked) {
checked = true;
break;
}
}
if (!checked) {
alert("請選擇要刪除的用戶");
return false;
}
return true;
}
現代寫法 (ES6+)
function checkDelForm() {
const checkboxes = document.getElementsByName("delUids");
const checked = Array.from(checkboxes).some(cb => cb.checked);
if (!checked) {
alert("請選擇要刪除的用戶");
return false;
}
return true;
}
jQuery 版本
function checkDelForm() {
const checked = $('input[name="delUids"]:checked').length > 0;
if (!checked) { alert("請選擇..."); return false; }
return true;
}
關鍵點
getElementsByName 返回**即時集合**,.length 為總數而非選中數。
- 必須遍歷檢查
.checked 屬性(布爾值)。
- 表單
onsubmit="return checkDelForm()" 確保返回 false 可阻止提交。