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

WordPress表单手机号字段仅允许输入数字需求及代码求助

解决Forminator手机号字段仅允许输入数字的问题

你已经通过Cleave.js给WordPress站点的Forminator表单手机号字段加了掩码,现在只需补充数字输入限制,下面提供两种可行方案:

方案1:用Cleave.js内置配置实现(推荐)

Cleave.js本身自带numericOnly参数,开启后会自动过滤所有非数字输入,直接修改你的初始化代码即可:

(function ($, window, document, undefined) {  
  "use strict";  

  const forminator_number_format = {
    run: function (event, form_id) {
      var _form = "#forminator-module-" + form_id,
        _form_el = $(_form);

      if (0 === _form_el.length) return;

      let _phones = _form_el.find(".phone .forminator-input");
      if (_phones.length) {
        _phones.each(function () {
          let _id = _form + " #" + $(this).attr("id");
          new Cleave(_id, {
            delimiters: ["(", ") ", "-"],
            blocks: [0, 2, 5, 4],
            uppercase: true,
            numericOnly: true // 添加这一行,强制只允许数字输入
          });
        });
      }
    },
  };

  $(document).ready(function () {
    $(document).on("after.load.forminator", forminator_number_format.run);
    $(".forminator-custom-form").each(function () {
      forminator_number_format.run(null, $(this).data("form-id"));
    });
  });
})(jQuery, window, document);

方案2:添加输入事件监听(兼容特殊场景)

如果内置配置不生效,或者需要更严格的限制(比如防止粘贴非数字内容),可以给输入框绑定事件过滤非数字:

(function ($, window, document, undefined) {  
  "use strict";  

  const forminator_number_format = {
    run: function (event, form_id) {
      var _form = "#forminator-module-" + form_id,
        _form_el = $(_form);

      if (0 === _form_el.length) return;

      let _phones = _form_el.find(".phone .forminator-input");
      if (_phones.length) {
        _phones.each(function () {
          let _id = _form + " #" + $(this).attr("id");
          // 保留原有掩码配置
          new Cleave(_id, {
            delimiters: ["(", ") ", "-"],
            blocks: [0, 2, 5, 4],
            uppercase: true,
          });

          // 添加数字输入限制
          const inputEl = $(this);
          inputEl.on("keydown input", function(e) {
            // 允许退格、删除、箭头等控制键
            const allowedKeys = [8, 9, 13, 46, 37, 38, 39, 40];
            if (allowedKeys.includes(e.keyCode)) return;

            // 禁止输入非数字字符
            if (!/[0-9]/.test(e.key)) {
              e.preventDefault();
            }

            // 处理粘贴的非数字内容
            if (e.type === "input") {
              this.value = this.value.replace(/[^0-9]/g, "");
            }
          });
        });
      }
    },
  };

  $(document).ready(function () {
    $(document).on("after.load.forminator", forminator_number_format.run);
    $(".forminator-custom-form").each(function () {
      forminator_number_format.run(null, $(this).data("form-id"));
    });
  });
})(jQuery, window, document);

注意事项

  • 优先用方案1,代码更简洁,是Cleave.js原生支持的功能
  • 修改代码后记得清理WordPress缓存,确保新代码生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:00:38