只允许在输入文本中使用数字、退格和删除键。

3

我在一个HTML5页面中有以下输入文本:

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

因为我需要一个只允许输入数字的输入框,但有时也需要删除数字。但是当我按下退格键或删除键时,什么都不会发生。

上面的代码只允许输入数字。如何允许使用退格和删除键呢?


2
这个有效...问题出在哪里? - brso05
你正在使用HTML5吗? - KidBilly
只要值是数字,按下什么键都无所谓,你就没问题了,不是吗? - lshettyl
4个回答

7

keypress事件只返回字母的编码。建议使用keydown事件代替。

keypress事件在按下能够产生字符值的键时触发(使用输入框代替)。

<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文档


1
这个 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();
        });

0

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


0
$(document).on("keydown",".tel_phone_number",function(evt){
      var ASCIICode = (evt.which) ? evt.which : evt.keyCode;  
      if((ASCIICode > 47 && ASCIICode < 58) || (ASCIICode > 95 && ASCIICode < 106) || jQuery.inArray(ASCIICode, [37,39,8,46]) != -1)
      {
      return true;
      }
      return false;
  })

我已经创建了一个脚本,允许在数字文本框中使用以下按钮。我已经允许了退格键、删除键、向右箭头和向左箭头。 退格键的代码是8,删除键的代码是46,向右箭头的代码是39,向左箭头的代码是37。 如果您不允许使用删除键,则可以删除ID [37,39,8,46]。这个例子是用来删除按键的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接