《JavaScript学习笔记》:只能输入数字的文本框

时间:2022-12-08 21:11:23

《JavaScript学习笔记》:只能输入数字的文本框

这主要涉及到一个键盘事件(onkeydown)和一个键码值的范围。

由于数字0~9所对应的键码为48~57,因此,我们只需要将48~57范围之外的键阻止掉就可以了。

假设我们有一个文本框,id为txt1,则如下的代码就实现了只允许数字输入。

    <script>
window.onload=function()
{

var oTxt = document.getElementById('txt1');
oTxt.value='';
oTxt.onkeydown=function(ev)
{

var oEvent = ev||event;
//alert(oEvent.keyCode);
//除了数字,全部给阻止了,也包括删除键BackSpace
if(oEvent.keyCode<48||oEvent.keyCode>57)
{
return false;//阻止输入
}

};

};
</script>

但是,上面的代码有一点点bug,在文本输入框,用户会输错肯定是常用的是,我们不能不允许它按回退键删除,是吧,因此上面的程序我们还需要修正。

由于回退键的keycode=8.(如果不知道键码,可使用alert(oEvent.keyCode)来获取)。

一般我们的回车键enter用来给用户提交它所输入的信息,因此我们也需要保留出来,即允许用户输入回车键。

因此,代码如下:

    <script>
window.onload=function()
{

var oTxt = document.getElementById('txt1');
oTxt.value='';
oTxt.onkeydown=function(ev)
{

var oEvent = ev||event;
//alert(oEvent.keyCode);
/*
由于对于输入框,删除键BK(keyCode为13)我们是需要的,回车键(keyCode为13)我们也是需要的,因此我们不能阻止掉
*/

if((oEvent.keyCode<48||oEvent.keyCode>57)&& oEvent.keyCode!=8&&oEvent.keyCode!=13)
{
return false;//阻止输入
}


};

};
</script>

以上,就是关于js中只能输入数字的文本框的实现。

只能输入数字,我们还可以使用正则表达式来实现。