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

JSP/Struts 頁面 JS 驗證失效?表單元素 name 與 JS 變量名不匹配、document.all 只支援 IE

     編輯:程式設計綜合問答

點擊圖片提交按鈕,JS `check()` 不執行。根因有三:表單控件 `name` 屬性與 JS 取值不一致、使用已廢棄的 `document.all`、密碼欄位名稱寫錯。

原始頁面關鍵錯誤

  • <input name="apwd"> 但 JS 寫 f.password.value(應為 f.apwd.value)。
  • <input name="fpwd"> 但 JS 寫 f.password.value(應為 f.fpwd.value)。
  • 用 `document.all.xg.src` 切換圖片,僅 IE 支援,現代瀏覽器報錯阻斷後續執行。

修正後 JS

function check() {
    var f = document.mf1; // form name="mf1"
    if (f.aname.value === '') { alert("管理員名稱不能為空!!!"); return false; }
    if (f.apwd.value === '') { alert("密碼不能為空!!!"); return false; }
    if (f.apwd.value !== f.fpwd.value) { alert("兩次密碼輸入不一致!!!"); return false; }
    // 測試
    console.log(f.aname.value, f.apwd.value, f.fpwd.value);
    f.submit();
}

圖片按鈕現代化改造

<img id="xg" src="../img/xg.gif" style="cursor:pointer"
     onclick="check()"
     onmouseover="this.src='../img/xga.gif'"
     onmouseout="this.src='../img/xg.gif'"
     onmousedown="this.src='../img/xgb.gif'"
     onmouseup="this.src='../img/xga.gif'" />
  • 用 `this.src` 直接操作當前元素,跨瀏覽器通用。
  • 移除 `javascript:` 偽協議,`onclick` 直接寫函數名。

進階建議

  • 給表單加 `onsubmit="return check()"`,兼容鍵盤 Enter 提交。
  • 用 `document.getElementById('mf1')` 獲取表單,比 `document.mf1` 更標準。
  • 密碼強度、用戶名格式可再加正則校驗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved