只允许数字输入
问题描述:
我有这样的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”键只有数字输入!我喜欢让它。
我希望你能帮我做到这一点。
答
我会改变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)"/>
答
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;
}
}
}
答
我更喜欢用这里(更干净的代码,简单的逻辑)的方法是使用HTML5属性(或者type="number"
或pattern="[0-9]*"
将工作做好)。
请参阅Disable webkit's spin buttons on input type="number"?如果您决定使用<input type="number">
并且要禁用spinners。
如果您确实需要支持具有此行为的旧浏览器,请考虑使用支持html5表单属性的填充。
Tab是9我相信,而不是8. –
@Asad 8 is backspace – epascarello