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

如何正确引入需在项目全局使用的JavaScript文件?

限制输入为十进制数字的jQuery解决方案

我看你正在实现一个给项目中输入框限制十进制数字输入的功能,这段代码的核心是只允许输入数字和单个小数点(支持.或,作为分隔符),我帮你补全并优化了代码,同时拆解下每个部分的作用:

完整可运行代码

$('.decimal').each(function () {
  $(this).keypress(function (e) {
    // 兼容不同浏览器的event对象
    const event = e || window.event;
    const charCode = event.which || event.keyCode;
    const inputVal = $(this).val();
    
    // 核心判断:禁止非数字、重复小数点的输入
    if (
      // 如果是小数点,但输入框已有同类型小数点,阻止输入
      ((charCode === 46 && inputVal.indexOf('.') !== -1) || 
       (charCode === 44 && inputVal.indexOf(',') !== -1)) &&
      // 同时按键不是0-9的数字键(ASCII码48-57)
      (charCode < 48 || charCode > 57)
    ) {
      event.preventDefault();
    } 
    // 补充:确保输入框最多只有一个小数点(不管是.还是,)
    else if (charCode === 46 || charCode === 44) {
      const decimalCount = inputVal.replace(/[^.,]/g, "").length;
      if (decimalCount >= 1) {
        event.preventDefault();
      }
    }
  });
});

代码细节解释

  • $('.decimal')选择器:给项目中所有带有decimal类的输入框绑定输入限制逻辑
  • keypress事件监听:在字符插入输入框前拦截判断,避免无效内容进入输入框
  • 事件对象兼容:处理不同浏览器对event对象的差异,确保能正确获取按键编码
  • 核心拦截规则:
    • 禁止重复输入相同类型的小数点(比如已经有.就不能再输入.)
    • 禁止输入数字、小数点之外的任意字符
    • 确保整个输入框内最多只能存在一个小数点(不管是.还是,)

实用优化建议

  • 增加粘贴拦截:防止用户粘贴不符合规则的内容
$('.decimal').on('paste', function(e) {
  const clipboardData = e.originalEvent.clipboardData || window.clipboardData;
  const pastedText = clipboardData.getData('text');
  // 验证粘贴内容是否为合法十进制格式
  const validDecimal = /^\d*[.,]?\d*$/;
  if (!validDecimal.test(pastedText)) {
    e.preventDefault();
  }
});
  • 统一小数点格式:方便后续业务处理(比如统一转成.)
$('.decimal').on('blur', function() {
  const currentVal = $(this).val();
  $(this).val(currentVal.replace(',', '.'));
});

内容的提问来源于stack exchange,提问作者Juan Salvador Portugal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:47:24