首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 表單複選框驗證邏輯錯誤:應檢查 checked 屬性而非元素數量

     編輯:程式設計綜合問答

錯誤代碼

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 可阻止提交。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved