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中只允许数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 texbox 中只允许数字,但也允许使用法语键盘输入