我有这个javascript代码只允许在文本框上输入数字
function CheckNumeric(e) {
if (window.event) // IE
{
if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8) {
event.returnValue = false;
return false;
}
}
else { // Fire Fox
if ((e.which < 48 || e.which > 57) & e.which != 8) {
e.preventDefault();
return false;
}
}
}
问题是它也阻止了“TAB”按钮!我想允许它。
我希望你能帮助我做到这一点。
答案 0 :(得分:2)
我会将CheckNumeric
函数更改为这样的函数并使用正则表达式来确定有效/无效的输入。 /[0-9\t\b]+/
匹配数字,标签和退格。如果您还想允许空格更改为/[0-9\t\b\s]+/
function CheckNumeric(e)
{
var charCode = e.charCode || e.keyCode;
var character = String.fromCharCode(charCode);
if(!character.match(/[0-9\t\b]+/))
{
if(window.event)
event.returnValue = false;
else
e.preventDefault();
return false;
}
return true;
}
此外,为了正确捕获密钥代码,您应该绑定到onKeyPress
事件而不是onKeyDown
,因为它不会为数字小键盘提供正确的密钥代码。
<input type="text" onkeypress="CheckNumeric(event)"/>
答案 1 :(得分:0)
KeyCode 8用于退格。我不知道你是否错误添加:
function CheckNumeric(e) {
if (window.event) // IE
{
if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8 & e.keyCode != 9) {
event.returnValue = false;
return false;
}
}
else { // Fire Fox
if ((e.which < 48 || e.which > 57) & e.which != 8 & e.which != 9) {
e.preventDefault();
return false;
}
}
}
答案 2 :(得分:0)
我更喜欢在这里使用的方法(更简洁的代码,更简单的逻辑)是使用html5属性(type="number"
或pattern="[0-9]*"
可以正常工作)。
如果您决定使用<input type="number">
并想要停用微调器,请参阅Disable webkit's spin buttons on input type="number"?。
如果您确实需要支持具有此行为的旧浏览器,请考虑使用支持html5表单属性的填充程序。