仅允许输入文本上的数字,退格键和删除键

时间:2015-04-20 12:32:58

标签: javascript jquery html

我在HTML5页面中有这个输入文本:

<input type="text" class="quantity" 
onkeypress='return (event.charCode >= 48 && event.charCode <= 57) || event.charCode == 8 || event.charCode == 46' required />

因为我需要一个只允许数字的输入文本,但我还需要删除一个数字。当我按退格键或删除没有任何反应时。

上面的代码只允许数字。我怎样才能允许退格和删除?

3 个答案:

答案 0 :(得分:5)

keypress event仅提供字母代码输出。请改用keydown

  

按下某个键时会触发按键事件,该键通常会产生一个字符值(改为使用输入)。

<input type="text" class="quantity" 
onkeydown='return (event.which >= 48 && event.which <= 57) 
   || event.which == 8 || event.which == 46' required />

我正在使用e.which,因为keydown会产生它,但正如文档所说,which已被弃用,而key应该被使用(即使没有完全实现) )

查看Fiddlekeypress docs

答案 1 :(得分:0)

您不应该使用keypress事件,而是使用keyup或keydown事件,因为keypress事件是针对真实(可打印)字符的。 “keydown”在较低级别处理,因此它将捕获所有非打印键,如DEL和ENTER

答案 2 :(得分:0)

这个jquery函数做到了

$('#id').keypress(function(e) {
            var a = [46];
            var k = e.which;
            console.log( k );
                a.push(8);
                a.push(0);

            for (i = 48; i < 58; i++)
                a.push(i);

            if (!($.inArray(k,a)>=0))
                e.preventDefault();
        });