jquery 只允许在输入文本上按数字、退格键和删除键

jchrr9hc  于 2023-04-20  发布在  jQuery
关注(0)|答案(4)|浏览(178)

我在HTML5页面中输入了以下文本:

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

因为我需要一个只允许数字的输入文本,但我也可能需要删除一个数字。当我按退格键或删除什么也没有发生。
上面的代码只允许数字。我怎么能允许退格键和删除?

vsaztqbk

vsaztqbk1#

keypressevent仅输出字母代码。请使用keydown
当一个键被按下并且该键通常产生一个字符值(使用input代替)时,将触发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 docs

0x6upsns

0x6upsns2#

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

wz1wpwve3#

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

5us2dqdw

5us2dqdw4#

$(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;
  })

我已经创建脚本允许下面的按钮在数字文本box.in这我已经允许退格键,删除,箭头右,箭头左.对于退格键代码是8,删除代码是46,箭头右是39,箭头左是37.如果你不允许删除键,那么你可以删除ID [37,39,8,46].这个例子删除键.

相关问题