在 JSP 列表頁面點擊編輯進入編輯頁,手機號中間四位顯示為星號(如 `138****1234`),但提交表單時不能將星號存入數據庫,需提交完整手機號。列表頁不顯示手機號,僅編輯頁掩碼展示。
展示與提交分離:前端通過 JavaScript 處理顯示邏輯,提交時從隱藏域獲取原始數據。
// 頁面初始化
$('#phoneDisplay').val(maskPhone(realPhone));
$('#realPhone').val(realPhone);
// 用戶輸入監聽
$('#phoneDisplay').on('input', function() {
var raw = $(this).val().replace(/\*/g, ''); // 簡易處理,實際需更健壯
$('#realPhone').val(raw);
$(this).val(maskPhone(raw));
});
// 提交前處理
$('form').submit(function() {
$('#phoneDisplay').removeAttr('name'); // 不提交顯示框
return true;
});
function maskPhone(phone) {
if (!phone || phone.length !== 11) return phone;
return phone.substr(0, 3) + '****' + phone.substr(7);
}
通過「隱藏域存真值、顯示框掩碼、提交取隱藏域」的模式,完美解決展示與提交不一致的問題,且不改動後端邏輯。