在将文本框验证为数字时,后退空间不起作用

时间:2015-10-18 13:29:42

标签: javascript mozilla

我正在使用JavaScript来验证文本框只接受Numbers。

我的代码如下:

onkeypress="return ( event.charCode >= 48 && event.charCode <= 57);"

现在,如果我键入120并想要将其更改为50,那么我想删除120并将新值设为50,但后退空间不起作用。

适用于谷歌浏览器,但不适用于Mozilla Firefox。

3 个答案:

答案 0 :(得分:4)

尝试以下方法:

onkeypress="var key = event.keyCode || event.charCode; return ((key  >= 48 && key  <= 57) || key == 8);";

这允许任何数字键(4857)和退格键(8)。通过将keyCode用于密钥代码并使用charCode作为后备,这也增加了更多支持。 JsFiddle:http://jsfiddle.net/3kszzzxr/

答案 1 :(得分:1)

这适用于所有浏览器.. 首先得到正确的事件

var key = (window.event) ? event.keyCode : event.which;

使用它

return (key  >= 48 && key  <= 57 || key ==8);

试试这个,明确添加退格键码 http://jsfiddle.net/m22zzc51/1/

答案 2 :(得分:1)

嗯,好吧,我认为你必须在文本框值改变时运行一个函数,我使用匹配来保留文本框值中的数字。

textbox.value=textbox.value.replace(/[^0-9]/ig,'');
/* From 0 to 9 (just numbers) */

这是一种更受支持的方式,但它可能会延迟几毫秒来删除字母......

某人在文本框中粘贴一些字母非常危险,然后您可以轻松地使用onkeyup / down,onpaste或big onchange,如果可能,您可以将此事件保存在某个脚本标记/文件中。

每个人都可以跳转你的代码,然后如果你使用服务器端进行验证,只需使用reg就可以使用数字。