You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让掩码输入框的原始文本而非星号存入数据库?

解决掩码输入存原始值到数据库的问题

问题根源

你的代码有两个关键错误:

  • destroyMask函数逻辑完全写反了,和createMask做一样的操作,根本无法还原原始有效字符
  • 若提交时误传了显示掩码的maskNum输入框值,就会把星号存进数据库

修正方案

1. 修正掩码处理函数

把destroyMask改成保留有效字符(数字、+),移除星号的逻辑,同时简化冗余的正则表达式:

function createMask(string) {
  // 将非数字、非+的字符替换为*,生成显示用的掩码
  return string.replace(/[^\+0-9]/g, '*');
}

function destroyMask(string) {
  // 只保留数字和+,移除所有星号和无效字符,还原原始有效内容
  return string.replace(/[^\\+0-9]/g, '');
}

2. 优化输入事件逻辑

确保每次输入时,先提取原始有效内容存入隐藏框,再生成掩码显示:

$("input[name='maskNum']").on("input", function(e) {
  const rawValue = this.value;
  // 提取有效字符存入隐藏字段
  const cleanDigits = destroyMask(rawValue);
  $("input[name='uDigits']").val(cleanDigits);
  // 生成掩码显示在输入框
  this.value = createMask(cleanDigits);
});

3. 确保提交原始值

  • 把uDigits设置为隐藏输入框:<input type="hidden" name="uDigits">
  • 表单提交时,只传递uDigits的值给后端,不要传递maskNum的内容,这样数据库就会存入原始的有效字符,而非星号。

内容的提问来源于stack exchange,提问作者Coder_Craft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:02:02