检测退格和 del on “input” 事件?事件.key === “退格”

2022-08-30 05:18:02

如何做到这一点?

我试过了:

var key = event.which || event.keyCode || event.charCode;

if(key == 8) alert('backspace');

但它不起作用...

如果我对按键事件执行相同的操作,它可以工作,但我不想使用按键,因为它在我的输入字段中输出键入的字符。我需要能够控制


我的代码:

  $('#content').bind('input', function(event){

    var text = $(this).val(),
        key = event.which || event.keyCode || event.charCode;

    if(key == 8){
      // here I want to ignore backspace and del
    }

    // here I'm doing my stuff
    var new_text = 'bla bla'+text;
    $(this).val(new_text);
  });

在我的输入中不应该附加任何字符,除了我用val()添加的内容之外,实际上用户的输入应该被完全忽略,只有按键操作对我来说很重要


答案 1

使用和取消删除。喜欢这个:.onkeydownreturn false;

var input = document.getElementById('myInput');

input.onkeydown = function() {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 )
        return false;
};

或者使用jQuery,因为您在问题中添加了jQuery标签:

jQuery(function($) {
  var input = $('#myInput');
  input.on('keydown', function() {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 )
        return false;
  });
});


答案 2

事件.key === “退格”

最近和更干净:使用。没有更多的任意数字代码!event.key

input.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Backspace" || key === "Delete") {
        return false;
    }
});

Mozilla Docs

支持的浏览器