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

如何禁止number类型输入框接收印地语字符与数字?

解决Number输入框禁止印地语字符及数字输入的问题

你的问题核心在于现有代码只限制了英文数字[0-9],但印地语数字(如१对应Unicode U+096F-U+0979)和印地语字符(U+0900-U+097F)不在这个匹配范围内,同时原代码对编辑控制键的支持也不完整,还没考虑到粘贴这类非键盘输入场景。下面是完整的解决方案:

1. 改进键盘事件处理函数

替换原有的numberOnly函数,改用evt.key直接获取输入字符(比charCode更可靠,尤其是处理Unicode字符时),同时开放必要的编辑控制键:

function numberOnly(evt) {
    // 允许常用编辑控制键,保证用户能正常修改输入内容
    const allowedControlKeys = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Enter', 'Tab'];
    if (allowedControlKeys.includes(evt.key)) {
        return true;
    }

    // 严格只允许英文数字0-9
    const numberRegex = /^[0-9]$/;
    return numberRegex.test(evt.key);
}

2. 添加输入监听,处理粘贴等非键盘操作

仅靠键盘事件无法阻止用户通过粘贴(右键粘贴、Ctrl+V)输入印地语内容,所以需要监听input事件,自动清除所有非英文数字的字符:

// 页面加载完成后绑定事件
window.addEventListener('load', function() {
    const wardInput = document.getElementById('txtWard');
    wardInput.addEventListener('input', function() {
        // 替换所有非0-9的字符为空
        this.value = this.value.replace(/[^0-9]/g, '');
    });
});

3. 保留原HTML结构

你的HTML代码可以保持不变,onkeypress事件继续绑定修改后的函数即可:

<input type="number" id="txtWard" onkeypress="return numberOnly(event)" required="required" runat="server" min="0" max="8" />

方案说明

  • 印地语数字和字符都不属于[0-9]范围,键盘输入会被直接拦截。
  • input事件监听覆盖了所有输入场景(包括粘贴、拖拽输入),确保输入框内始终只有英文数字。
  • 开放必要的控制键,不会影响用户正常的编辑操作(比如删除、移动光标)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:39:57