JavaScript中只允许数字[重复]

Posted

技术标签:

【中文标题】JavaScript中只允许数字[重复]【英文标题】:Allow only numbers in JavaScript [duplicate] 【发布时间】:2012-06-22 06:23:00 【问题描述】:

可能重复:html Text Input allow only Numeric input

我用过这个脚本

function isNumberKey(evt)
  
    var e = event || evt; // for trans-browser compatibility
    var charCode = e.which || e.keyCode;                        
    if (charCode > 31 && (charCode < 47 || charCode > 57))
    return false;
    if (e.shiftKey) return false;
    return true;
 

但是这个脚本不能单独在 Firefox 中运行。 在javascript中限制用户使用shift键的任何替代方法?

【问题讨论】:

你真的用过.shiftkey吗?如果是:它需要是.shiftKey,大写K 我同时使用了大写和小写。不能在 Firefox 中工作。它允许。 如果你说 what 你试图通过“限制”shift 键来完成它会有所帮助。您想在按下 shift 键时阻止任何按键吗?您是否希望 shift 键不起作用(例如,shift+a 生成 a 而不是 A)? @itzArun:那么你需要展示更多代码。例如,事件处理程序的绑定。也许你用错了。 我已经更新了我的脚本。我只想在我的文本框字段中允许数字 【参考方案1】:

event 没有在 Firefox 中定义,它破坏了你的代码。测试后放evt:

function isNumberKey(evt)
  
    var e = evt || window.event; //window.event is safer, thanks @ThiefMaster
    var charCode = e.which || e.keyCode;                        
    if (charCode > 31 && (charCode < 47 || charCode > 57))
    return false;
    if (e.shiftKey) return false;
    return true;
 

Fiddle

下次检查您的错误控制台。 :)

【讨论】:

另一种选择是使用window.event,即undefined,但访问它不会引发错误。 不错的建议,已编辑答案以包含其他可能的修复方法。 这对我有帮助。谢谢你们俩。【参考方案2】:

试试这个代码..

$(document).keydown(function (e) 
    if (e.shiftKey) 
        e.preventDefault();
    
);

检查小提琴..

http://jsfiddle.net/kabichill/8FgH4/

【讨论】:

检查小提琴..jsfiddle.net/kabichill/8FgH4【参考方案3】:

你可以使用jQuery限制任何按键(也可以是一组)

$(document).ready(function()

     $('#PHONE_NUMBER').keypress(function(e) 
            var a = [];
            var k = e.which;

            for (i = 48; i < 58; i++)
            a.push(i);
            a.push(8);
            if (!(a.indexOf(k)>=0))
                e.preventDefault();
            );
);

其中#phone number 是输入元素的id,for 循环和push 函数只推送允许的字符。 48 到 58 是键盘上数字 0-9 的键值

【讨论】:

Jquery 并不是所有事情的神奇答案。停止使用 jquery 来解决简单的 javescript 可以解决的问题。 使用 jQuery 没问题,但是每次按键都创建一个数组?! @Truth jQuery is awesome and do all things! @ThiefMaster 恭喜钻石

以上是关于JavaScript中只允许数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从javascript中的字符串中提取数字[重复]

如何在 texbox 中只允许数字,但也允许使用法语键盘输入

如何在mysql中只允许字母数字值

在 type=text Ionic 的离子输入中只允许数字

如何在 swift 2.0 中只允许 UITextfield 中的某些数字集

如何在react hooks中只允许输入数字?