2011-09-20 98 views
1

在寻找方法来允许在文本输入你通常得到的东西只喜欢数字:如何只允许文本输入的数字,但允许JavaScript的命令?

function keyPressEvent (e) { 
    var keyCode = e.which || e.keyCode; 
    if (keyCode < 48 || keyCode > 57) { 
     return false; 
    } 
} 

但问题是,这让只有你的命令不起作用键。从退格和删除开始,但即使按Ctrl + A或F5。我知道我可以为所有这些创造例外,但我认为这将是时间的一个缩影。有没有简单的方法来做我想要的?有没有像检测将被添加到文本的字符,而不是按下的键?

+0

你可以做他们建议在这里什么:http://stackoverflow.com/questions/950208/textbox-with-alphanumeric-check-in-javascript选择字母字符。 – scrappedcola

回答

2

其实我去了一个办法,我让用户类型/输入任何他们想做的,并手动强制值必须是数字。像这样的东西(这是一个jQuery项目,但这个想法可以很容易地重复使用没有jQuery)。

fieldJq.bind('click keyup change blur focus', function (ev) { 
    var curVal = $(this).val(); 
    $(this).val(curVal.replace(/[^0-9\.]/g, '')); 
}); 

这里的想法是,我让他们把任何他们想进去(所以没有打破比如复制/粘贴等控制命令的机会),但任何值改变之后我删除任何东西这不是一个数字或小数点。在这一点上它不是100%防火(10.0.0不是无效的),但它起初至少接近。如果您不需要浮点支持,并且可以从正则表达式中删除\.,那么您将拥有强制数字输入。

+0

我想这是现​​在最好的答案,同时我应该等待在大多数浏览器中实现的数字输入类型。无论如何,谢谢! – Cokegod

+0

在IE7中它总是把光标放到最后,可以通过在替换之前检查来修复: if(curVal.search(/ [^ 0-9 \。]/g)> - 1) – samir105